Skip to content
Snippets Groups Projects
Commit 67f8c922 authored by Yann Garcia's avatar Yann Garcia
Browse files

Finalyze test cases TD_VoLTE_ECO_INT_REL_01_01/02

parent d44d6763
No related branches found
No related tags found
1 merge request!6Update master branch for closing TTF T010
......@@ -285,7 +285,6 @@ module AtsImsIot_Emergency {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
......@@ -308,8 +307,8 @@ module AtsImsIot_Emergency {
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
f_mtc_userRegistration(v_psap, v_infoPsap);
f_mtc_userRegistration(v_ueA, v_userInfoA);
// PSAP is not known from the IMS A
f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_01_01();
// Test body
......@@ -434,7 +433,11 @@ module AtsImsIot_Emergency {
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
f_mtc_userRegistration(v_psap, v_infoPsap);
if (PX_PSAP_REGISTERED) {
f_mtc_userRegistration(v_psap, v_infoPsap);
} else {
// TODO Check OPTIONS from PSAP to E-CSCF
}
f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_01_02();
// Test body
......@@ -542,7 +545,6 @@ module AtsImsIot_Emergency {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
......@@ -551,7 +553,7 @@ module AtsImsIot_Emergency {
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_EB_INTERFACENAME, // E-CSCF -> IBCF
PX_SIP_MM_PSAP_INTERFACENAME // IBCF -> PSAP
PX_SIP_PSTN_INTERFACENAME // IBCF -> PSTN -> PSAP
}))
{
var SipMessage v_sip;
......@@ -566,7 +568,7 @@ module AtsImsIot_Emergency {
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
f_mtc_userRegistration(v_psap, v_infoPsap);
// PSAP is not known from the IMS A
f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_01_03();
// Test body
......@@ -1010,6 +1012,97 @@ module AtsImsIot_Emergency {
group EmergencySessionRelease {
/**
* @desc To perform originating UE session release and the tear down of related dedicated bearers.
* On call release, the P-CSCF A should trigger the removal of all relevant previously created bearers
* @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release
* @remark This is option1: IBCF is connected to the PSAP, the interface IBCF and the PSAP is the Mm interface
*/
testcase TD_VoLTE_ECO_INT_REL_01_01() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_EB_INTERFACENAME, // E-CSCF -> IBCF
PX_SIP_MM_PSAP_INTERFACENAME // IBCF -> PSAP
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
f_mtc_userRegistration(v_psap, v_infoPsap);
f_mtc_userInitiateCall (v_ueA, v_infoPsap);
f_mtc_userCheckRinging(v_psap);
f_mtc_userCheckPeerIsRinging(v_ueA);
f_mtc_userAnswerCall(v_psap);
f_mtc_userCheckCallEstablished(v_ueA); // Event 1
f_mtc_userCheckCallEstablished(v_psap); // Event 1
f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_01();
// Test body
//f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
f_mtc_check_TP_GM_PCSCF_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2
f_mtc_check_TP_MW_ECSCF_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 3
f_mtc_check_TP_MW_IBCF_BYE_01(vc_vxlte_monitor_components.mwBE, -, v_sip); // Event 3
f_mtc_check_TP_MM_PSAP_BYE_01(vc_vxlte_monitor_components.mwB_PSAP); // Event 6
//Rx/Gx exchange after BYE was received at P-CSCF
f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 10
f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 11)
f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 12)
f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 13)
f_mtc_check_TP_MW_IBCF_200OK_01(vc_vxlte_monitor_components.mwBE, -, v_sip); // Event 15
f_mtc_check_TP_MW_ECSCF_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 20
f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 21
f_mtc_userCheckCallTerminated(v_ueA); // Event 22
f_mtc_userCheckCallCancelled(v_ueB); // Event 23
// Postamble
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_ueB);
//unmap/disconnect component ports
f_cf_user_down ( v_ueB );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_ECO_INT_REL_01_01
group f_TD_VoLTE_ECO_INT_REL_01_01 {
function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_01() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_01
} // End of group f_TD_VoLTE_ECO_INT_REL_01_01
/**
* @desc To perform originating UE session release and the tear down of related dedicated bearers.
* On call release, the P-CSCF A should trigger the removal of all relevant previously created bearers
......@@ -1100,6 +1193,83 @@ module AtsImsIot_Emergency {
} // End of f_TD_VoLTE_ECO_INT_REL_01_02
/**
* @desc To perform originating UE session release and the tear down of related dedicated bearers.
* On call release, the P-CSCF A should trigger the removal of all relevant previously created bearers
* @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release
* @remark This is option3: IBCF is connected to the PSTN network
*/
testcase TD_VoLTE_ECO_INT_REL_01_03() runs on ImsTestCoordinator system IotSystemInterface {
var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP );
f_setVxLteMonIterfacesAvailability();
//Check required monitor interfaces due to TD
if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
PX_DIAMETER_GX_INTERFACENAME,
PX_DIAMETER_RX_INTERFACENAME,
PX_SIP_MW_PE_INTERFACENAME,
PX_SIP_EB_INTERFACENAME, // E-CSCF -> IBCF
PX_SIP_PSTN_INTERFACENAME // IBCF -> PSTN -> PSAP
}))
{
var SipMessage v_sip;
f_cf_createVxLteMonitor();
// map/connect component ports
f_cf_adapter_up ( );
f_cf_user_up ( v_ueA );
f_cf_user_up ( v_psap );
f_cf_VxLteMonitor_Up();
// Preamble
f_mtc_userRegistration(v_ueA, v_userInfoA);
f_mtc_userRegistration(v_psap, v_infoPsap);
f_mtc_userInitiateCall (v_ueA, v_infoPsap);
f_mtc_userCheckRinging(v_psap);
f_mtc_userCheckPeerIsRinging(v_ueA);
f_mtc_userAnswerCall(v_psap);
f_mtc_userCheckCallEstablished(v_ueA); // Event 1
f_mtc_userCheckCallEstablished(v_psap); // Event 1
f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_03();
// Test body
//f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
// TODO
f_mtc_userCheckCallTerminated(v_ueA); // Event 22
f_mtc_userCheckCallCancelled(v_ueB); // Event 23
// Postamble
f_PO_user_home_deregistration(v_ueA);
f_PO_user_home_deregistration(v_ueB);
//unmap/disconnect component ports
f_cf_user_down ( v_ueB );
f_cf_user_down ( v_ueA );
f_cf_VxLteMonitor_Down();
f_cf_adapter_down ( );
}else{
//log...
setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
}
f_cf_adapter_down ( );
} // End of TC TD_VoLTE_ECO_INT_REL_01_03
group f_TD_VoLTE_ECO_INT_REL_01_03 {
function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_03() runs on ImsTestCoordinator {
log("If the test case fails, please check the preconditions");
// TODO Add real code to check pre-conditions
} // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_03
} // End of group f_TD_VoLTE_ECO_INT_REL_01_03
} // End of group EmergencySessionRelease
group EmergencySessionAbortOrReject {
......
......@@ -22,6 +22,11 @@ group SUT_CONF {
* @desc charstring for PChargingVector TP_IC_IBCF_INVITE_04
*/
modulepar charstring PX_IMS_A_ICID := "PX_IMS_A_ICID";
/**
* @desc Set to true of PSAP shall be registered to the IMS
*/
modulepar boolean PX_PSAP_REGISTERED := true;
} // end group SUT_CONF
......
This diff is collapsed.
......@@ -28,107 +28,135 @@ module AtsImsIot_Templates_MM {
import from AtsImsIot_PIXITS all;
import from AtsImsIot_Templates all;
/**
* @desc INVITE Request checking TP_MM_PSAP_INVITE_01
*/
template(present) INVITE_Request mdw_TP_MM_PSAP_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?,
template (present) From p_from := ?,
template (present) To p_to := ?)
modifies mw_INVITE_Request_Base := {
msgHeader := {
fromField := p_from,
toField := p_to,
route := ({
fieldName := ROUTE_E,
routeBody := {
*,
complement(mw_routeBody(p_IBCF_SIP_URI)),
*
}
}, omit),
recordRoute := {
fieldName := RECORD_ROUTE_E,
routeBody := {mw_routeBody(p_IBCF_SIP_URI), *}
},
pChargingVector := {
fieldName := P_CHARGING_VECTOR_E,
chargeParams := {
*,
/**
* @desc INVITE Request checking TP_MM_PSAP_INVITE_01
*/
template(present) INVITE_Request mdw_TP_MM_PSAP_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?,
template (present) From p_from := ?,
template (present) To p_to := ?)
modifies mw_INVITE_Request_Base := {
msgHeader := {
fromField := p_from,
toField := p_to,
route := ({
fieldName := ROUTE_E,
routeBody := {
*,
complement(mw_routeBody(p_IBCF_SIP_URI)),
*
}
}, omit),
recordRoute := {
fieldName := RECORD_ROUTE_E,
routeBody := {mw_routeBody(p_IBCF_SIP_URI), *}
},
pChargingVector := {
fieldName := P_CHARGING_VECTOR_E,
chargeParams := {
*,
// {id := "icid-value", paramValue := ?},
*,
{id := "orig-ioi", paramValue := ?},
*,
*,
{id := "orig-ioi", paramValue := ?},
*,
// complement({id := "term-ioi", paramValue := ?}),
*,
complement({id := "access-network-charging-info", paramValue := ?}),
*
}
},
pAccessNetworkInfo := omit
}
}
*,
complement({id := "access-network-charging-info", paramValue := ?}),
*
}
},
pAccessNetworkInfo := omit
}
}
template (present) Response mw_TP_MM_PSAP_100Trying_01(
template (present) Response mw_TP_MM_PSAP_100Trying_01(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_100Trying_Base := {
msgHeader := {
cSeq := p_cSeq,
fromField := p_from,
toField := p_to
}
} // End of template mw_TP_MM_PSAP_100Trying_01
template (present) Response mw_TP_MM_PSAP_180Ringing_01(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_100Trying_Base := {
msgHeader := {
cSeq := p_cSeq,
fromField := p_from,
toField := p_to
}
} // End of template mw_TP_MM_PSAP_100Trying_01
template (present) Response mw_TP_MM_PSAP_180Ringing_01(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_180Ringing_Base := {
msgHeader := {
cSeq := p_cSeq,
fromField := p_from,
toField := p_to
}
} // End of template mw_TP_MM_PSAP_180Ringing_01
template (present) Response mw_TP_MM_PSAP_183SessionProgress_01(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_183SessionProgress_Base := {
msgHeader := {
cSeq := p_cSeq,
fromField := p_from,
toField := p_to
) modifies mw_180Ringing_Base := {
msgHeader := {
cSeq := p_cSeq,
fromField := p_from,
toField := p_to
}
} // End of template mw_TP_MM_PSAP_180Ringing_01
template (present) Response mw_TP_MM_PSAP_183SessionProgress_01(
template (present) CSeq p_cSeq := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_183SessionProgress_Base := {
msgHeader := {
cSeq := p_cSeq,
fromField := p_from,
toField := p_to
}
} // End of template mw_TP_MM_PSAP_183SessionProgress_01
template (present) ACK_Request mw_TP_MM_PSAP_ACK_01( // TODO To be enforced
template (present) CallId p_callId := ?,
template (present) CSeq p_cSeq := ?,
template (present) SipUrl p_ack_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_ACK_Request_Base := {
requestLine := {
method := ACK_E,
requestUri := p_ack_uri, // @TODO
sipVersion := c_sipNameVersion
},
msgHeader := {
callId := p_callId,
fromField := p_from,
toField := p_to,
route := {
fieldName := ROUTE_E,
routeBody := {
*,
?,
*
}
}
} // End of template mw_TP_MM_PSAP_183SessionProgress_01
}
} // End of template mw_TP_MM_PSAP_ACK_01
template (present) ACK_Request mw_TP_MM_PSAP_ACK_01( // TODO To be enforced
template (present) CallId p_callId := ?,
template (present) CSeq p_cSeq := ?,
template (present) SipUrl p_ack_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_ACK_Request_Base := {
requestLine := {
method := ACK_E,
requestUri := p_ack_uri, // @TODO
sipVersion := c_sipNameVersion
},
msgHeader := {
callId := p_callId,
fromField := p_from,
toField := p_to,
route := {
fieldName := ROUTE_E,
routeBody := {
*,
?,
*
}
template (present) BYE_Request mw_TP_MM_PSAP_BYE_01( // TODO To be enforced
template (present) CallId p_callId := ?,
template (present) CSeq p_cSeq := ?,
template (present) SipUrl p_bye_uri := ?,
template (present) From p_from := ?,
template (present) To p_to := ?
) modifies mw_BYE_Request_Base := {
requestLine := {
method := BYE_E,
requestUri := p_bye_uri, // @TODO
sipVersion := c_sipNameVersion
},
msgHeader := {
callId := p_callId,
fromField := p_from,
toField := p_to,
route := {
fieldName := ROUTE_E,
routeBody := {
*,
?,
*
}
}
} // End of template mw_TP_MM_PSAP_ACK_01
}
} // End of template mw_TP_MW_PCSCF_BYE_01
} // End of module AtsImsIot_Templates_MM
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment