From 7812a27d25a2c864f8c5622f248d4a088f94a34f Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 4 Aug 2023 09:52:00 +0200 Subject: [PATCH 1/4] TTF T010 FSCOM week#31 session --- .../AtsImsIot_Diameter_Templates.ttcn | 6 +- ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn | 1886 +++++++++++------ ttcn/AtsImsIot/AtsImsIot_Functions.ttcn | 20 +- ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn | 8 +- ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn | 10 +- ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn | 10 +- ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn | 14 +- ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn | 10 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn | 127 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn | 335 +++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn | 192 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn | 80 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn | 26 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn | 647 ++++++ ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn | 45 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn | 206 +- .../AtsImsIot_TP_behavior_MW_EB.ttcn | 207 +- .../AtsImsIot_TP_behavior_MW_EC.ttcn | 107 +- .../AtsImsIot_TP_behavior_MW_IS.ttcn | 65 +- .../AtsImsIot_TP_behavior_MW_PS.ttcn | 100 +- .../AtsImsIot_TP_behavior_MW_SI.ttcn | 2 +- .../AtsImsIot_TP_behavior_Mx_LRF.ttcn | 98 + ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn | 255 ++- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn | 214 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn | 92 +- ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn | 24 +- ttcn/AtsImsIot/AtsImsIot_Templates.ttcn | 259 ++- ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn | 283 ++- ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn | 46 +- ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn | 188 ++ ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn | 9 + ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn | 62 +- ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn | 229 +- .../AtsImsIot_TestConfiguration.ttcn | 28 +- ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn | 12 +- ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn | 10 +- 36 files changed, 4275 insertions(+), 1637 deletions(-) create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_TP_behavior_Mx_LRF.ttcn create mode 100644 ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn diff --git a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn index fe9060e..b33c7b0 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Diameter_Templates.ttcn @@ -10,8 +10,8 @@ module AtsImsIot_Diameter_Templates { //LibCommon - import from LibCommon_DataStrings {type Bit1, Bit4, Bit5, Bit8;}//all; - import from LibCommon_BasicTypesAndValues {type UInt8, UInt32, UInt64;}; + import from LibCommon_DataStrings all; + import from LibCommon_BasicTypesAndValues all; //LibDiameter import from LibDiameter_TypesAndValues all; @@ -21,7 +21,7 @@ module AtsImsIot_Diameter_Templates { import from LibDiameter_Types_Gx_AVPs all; import from LibDiameter_Types_Rx_AVPs all; import from LibDiameter_Types_CxDx_AVPs all; - import from LibDiameter_Types_S6a_AVPs {type Cancellation_Type_AVP, Cancellation_Type_Code, Subscription_Data_AVP}; + import from LibDiameter_Types_S6a_AVPs all; import from LibDiameter_Types_S9_AVPs all; group DiameterHeaderFields { diff --git a/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn b/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn index a12755a..a3d29d9 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn @@ -19,17 +19,20 @@ module AtsImsIot_Emergency { // LibImsIot import from AtsImsIot_Functions all; // ImsIot - import from AtsImsIot_TestConfiguration all; - import from AtsImsIot_TestSystem all; - import from AtsImsIot_Functions all; - import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_TestConfiguration all; + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Functions all; + import from AtsImsIot_Templates all; import from AtsImsIot_TP_behavior_GM all; import from AtsImsIot_TP_behavior_MW_PS all; import from AtsImsIot_TP_behavior_MW_SI all; import from AtsImsIot_TP_behavior_MW_IS all; import from AtsImsIot_TP_behavior_MW_EC all; import from AtsImsIot_TP_behavior_MW_EB all; + import from AtsImsIot_TP_behavior_Mx_LRF all; // FIXME Rename into MX_ import from AtsImsIot_TP_behavior_MM all; + import from AtsImsIot_TP_behavior_MI all; import from AtsImsIot_TP_behavior_ML all; import from AtsImsIot_TP_behavior_IC all; import from AtsImsIot_TP_behavior_CX all; @@ -39,6 +42,7 @@ module AtsImsIot_Emergency { import from AtsImsIot_TP_behavior_S9 all; import from AtsImsIot_TP_behavior_SH all; import from AtsImsIot_TP_behavior_RX all; + import from AtsImsIot_PIXITS all; /** * @see ETSI TS 103 795-2 Clause 5 Test Descriptions (Interoperability at HPLMN) @@ -56,37 +60,37 @@ module AtsImsIot_Emergency { * On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address. * The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF * and allowed forwarding towards E-CSCF - * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; * TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails) * */ testcase TC_VoLTE_ECO_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { - + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ - f_cf_createVxLteMonitor(); - + f_cf_createVxLteMonitor(); + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_VxLteMonitor_Up(); - + // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - + // test body // Check that user A starts initial network attachment f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2) f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a); // Check (ULA – Event 3) f_mtc_check_TP_GX_PCRF_ECO_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5) - + // postamble f_mtc_userRadioEnabled ( v_ueA, false, true ); - + //unmap/disconnect component ports f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); @@ -104,7 +108,7 @@ module AtsImsIot_Emergency { * On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address. * The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF * and allowed forwarding towards E-CSCF - * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; + * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; * TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails) * */ @@ -116,7 +120,7 @@ module AtsImsIot_Emergency { f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){ - f_cf_createVxLteMonitor(); + f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); @@ -158,10 +162,10 @@ module AtsImsIot_Emergency { * @see ETSI TS 103 795-2 Clause 5.2.1 IMS Emergency Registration - Successful */ testcase TD_VoLTE_ECO_INT_REG_01() runs on ImsTestCoordinator system IotSystemInterface { - + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A_EMERGENCY ); - + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, @@ -172,7 +176,7 @@ module AtsImsIot_Emergency { PX_DIAMETER_RX_INTERFACENAME, PX_DIAMETER_GX_INTERFACENAME})) { - f_cf_createVxLteMonitor(); + f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); @@ -181,7 +185,7 @@ module AtsImsIot_Emergency { // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - + // Test body f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_01(vc_vxlte_monitor_components.gmA); // Events 1, 12 f_mtc_check_TP_MW_PCSCF_ECO_REGISTER_01(vc_vxlte_monitor_components.mwPI); // Event 4, 11 @@ -193,14 +197,14 @@ module AtsImsIot_Emergency { f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_02(vc_vxlte_monitor_components.gmA); // Events 13, 22 f_mtc_check_TP_MW_PCSCF_ECO_REGISTER_02(vc_vxlte_monitor_components.mwPI); // Events 14, 21 f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_02(vc_vxlte_monitor_components.mwIS, true); // Event 17, 20 - + f_mtc_check_TP_CX_HSS_ECO_UAA_02(f_getCxInterface(PX_DIAMETER_CX_SINGLE_INTERFACE));// Event 15, 16 f_mtc_check_TP_CX_HSS_SAA_01(vc_vxlte_monitor_components.cxSH);// Event 18, 19 // postamble f_PO_user_home_deregistration ( v_ueA ); f_mtc_userRadioEnabled ( v_ueA, false, true ); - + //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); @@ -216,10 +220,10 @@ module AtsImsIot_Emergency { * @see ETSI TS 103 795-2 Clause 5.2.2 IMS Emergency Registration - Unsuccessful */ testcase TD_VoLTE_ECO_INT_REG_02() runs on ImsTestCoordinator system IotSystemInterface { - + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A_EMERGENCY ); - + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME, @@ -230,7 +234,7 @@ module AtsImsIot_Emergency { PX_DIAMETER_RX_INTERFACENAME, PX_DIAMETER_GX_INTERFACENAME})) { - f_cf_createVxLteMonitor(); + f_cf_createVxLteMonitor(); // map/connect component ports f_cf_adapter_up ( ); @@ -239,7 +243,7 @@ module AtsImsIot_Emergency { // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile - + // Test body f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_01(vc_vxlte_monitor_components.gmA); // Events 1, 12 f_mtc_check_TP_MW_PCSCF_ECO_REGISTER_01(vc_vxlte_monitor_components.mwPI); // Event 4, 11 @@ -258,7 +262,7 @@ module AtsImsIot_Emergency { // postamble f_PO_user_home_deregistration ( v_ueA ); f_mtc_userRadioEnabled ( v_ueA, false, true ); - + //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); @@ -280,7 +284,7 @@ module AtsImsIot_Emergency { /** * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment within an emergency registration. - * PSAP is located in the IM CN subsystem of IMS A. + * PSAP is located in the IM CN subsystem of IMS A * @see ETSI TS 103 795-2 Clause 5.3.1.2 UE calling PSAP with emergency registration */ testcase TD_VoLTE_ECO_INT_INI_01() runs on ImsTestCoordinator system IotSystemInterface { @@ -288,41 +292,39 @@ 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 ); - + 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_MM_PSAP_INTERFACENAME // E-CSCCF -> PSAP + PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> 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_ueA, v_userInfoA); if (PX_PSAP_REGISTERED) { - f_mtc_userRegistration(v_psap, v_infoPsap); + 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(); - + // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 - f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 @@ -332,49 +334,48 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 - f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 11 - f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11 + f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 Session Progress - f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 12 + f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 12 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 - + //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17 - - f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 20 + + f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 20 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 21 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 22 - + f_mtc_userCheckRinging(v_psap); // Event 19 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 f_mtc_userAnswerCall(v_psap); // Event 26 - - f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 23 + + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 23 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 26 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27 - f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 28 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 28 f_mtc_userCheckCallEstablished(v_ueA); // Event 29 f_mtc_userCheckCallEstablished(v_psap); // Event 29 - + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -385,18 +386,18 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_INI_01 - + group f_TD_VoLTE_ECO_INT_INI_01 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_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_INI_01 - + } // End of group f_TD_VoLTE_ECO_INT_INI_01 - + /** - * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment within an emergency registration. + * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session session establishment within non-emergency registration. * PSAP is located in the IM CN subsystem of IMS A. * @see ETSI TS 103 795-2 Clause 5.3.1.3 UE calling PSAP with non-emergency registration * @remark This is option2: IBCF is connected to the PSAP, the interface IBCF and the PSAP is the Mm interface @@ -406,41 +407,41 @@ 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 ); - + 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_MM_PSAP_INTERFACENAME // E-CSCCF -> PSAP + PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> 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_ueA, v_userInfoA); if (PX_PSAP_REGISTERED) { - f_mtc_userRegistration(v_psap, v_infoPsap); + 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_02(); - + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - - f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 - f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_03(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 @@ -450,48 +451,48 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 - f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - - f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 11 - f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); + + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11 + f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 Session Progress - f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 12 + f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 12 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 - + //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17 - - f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 22 + + f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 22 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 - + f_mtc_userCheckRinging(v_psap); // Event 19 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 f_mtc_userAnswerCall(v_psap); // Event 26 - - f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 23 + + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 23 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27 - f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 28 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 28 f_mtc_userCheckCallEstablished(v_ueA); // Event 29 f_mtc_userCheckCallEstablished(v_psap); // Event 29 - + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -502,16 +503,16 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_INI_02 - + group f_TD_VoLTE_ECO_INT_INI_02 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_02() 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_INI_02 - + } // End of group f_TD_VoLTE_ECO_INT_INI_02 - + /** * @desc To demonstrate the establishment of emergency bearers at the originating EPC due to SIP emergency session establishment without any registration. * PSAP is located in the IM CN subsystem of IMS A. @@ -522,37 +523,37 @@ module AtsImsIot_Emergency { var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap ); - var ImsUserInfo v_infoPsap := f_getImUser ( PX_PSAP ); - + 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_MM_PSAP_INTERFACENAME // E-CSCF -> PSAP + PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCF -> 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 // No registration for user A - f_mtc_userRegistration(v_psap, v_infoPsap); + f_mtc_userRegistration(v_psap, v_infoPsap); f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_03(); - + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - - f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 - f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 @@ -562,48 +563,48 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 - f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - - f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 11 - f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); + + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11 + f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 Session Progress - f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 12 + f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 12 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 - + //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17 - - f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 22 + + f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 22 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 - + f_mtc_userCheckRinging(v_psap); // Event 19 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19 f_mtc_userAnswerCall(v_psap); // Event 26 - - f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 23 + + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 23 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27 - f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 28 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 28 f_mtc_userCheckCallEstablished(v_ueA); // Event 29 f_mtc_userCheckCallEstablished(v_psap); // Event 29 - + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -614,19 +615,19 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_INI_03 - + group f_TD_VoLTE_ECO_INT_INI_03 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_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_INI_03 - + } // End of group f_TD_VoLTE_ECO_INT_INI_03 /** * @desc To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment within an emergency registration. - * PSAP is located in the IM CN subsystem of IMS A. The PSAP URI is delivered by the LRF + * PSAP is located in the IM CN subsystem of IMS A. The PSAP URI is delivered by the LRF. * @see ETSI TS 103 795-2 Clause 5.3.1.5 UE calling PSAP in same network, LRF derived PSAP URI * @remark This is option2: IBCF is connected to the PSAP, the interface IBCF and the PSAP is the Mm interface */ @@ -635,42 +636,43 @@ 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 ); - + 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_MM_PSAP_INTERFACENAME, // E-CSCF -> PSAP - PX_SIP_ML_LRF_INTERFACENAME // E-CSCF -> LRF + PX_SIP_MM_B_PSAP_INTERFACENAME, // E-CSCF -> PSAP + PX_SIP_ML_E_LRF_INTERFACENAME // E-CSCF -> LRF })) { 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_ueA, v_userInfoA); if (PX_PSAP_REGISTERED) { - f_mtc_userRegistration(v_psap, v_infoPsap); + 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(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 - f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 @@ -683,48 +685,48 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mlE_LTF, -, v_sip); // Event 11 - f_mtc_check_TP_ML_ECSCF_ECO_3xx_01(vc_vxlte_monitor_components.mlE_LTF, -, v_sip); // Event 12 + f_mtc_check_TP_ML_ECSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 11 + f_mtc_check_TP_ML_ECSCF_ECO_3xx_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 12 - f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 13 - f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13 + f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 Session Progress - f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 14 + f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 14 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 - + //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 16 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17 - - f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 22 + + f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 22 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 24 - + f_mtc_userCheckRinging(v_psap); // Event 21 f_mtc_userCheckPeerIsRinging(v_ueA); // Event 21 f_mtc_userAnswerCall(v_psap); // Event 28 - - f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 25 + + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 25 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 26 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 27 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 28 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 29 - f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 30 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 30 f_mtc_userCheckCallEstablished(v_ueA); // Event 31 f_mtc_userCheckCallEstablished(v_psap); // Event 31 - + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -735,14 +737,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_INI_04 - + group f_TD_VoLTE_ECO_INT_INI_04 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_04() 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_INI_04 - + } // End of group f_TD_VoLTE_ECO_INT_INI_04 /** @@ -751,41 +753,47 @@ module AtsImsIot_Emergency { * @see ETSI TS 103 795-2 Clause 5.3.1.6 UE calling PSAP in other network via IBCF */ testcase TD_VoLTE_ECO_INT_INI_05 ( ) 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_MW_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_IC_INTERFACENAME // IBCF -> IMS_B -> 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); - // PSAP is not known from the IMS A + 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_05(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - - f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 - f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 @@ -795,60 +803,59 @@ module AtsImsIot_Emergency { f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 - - f_mtc_check_TP_MW_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - - f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwBE, -, v_sip); // Event 11 - f_mtc_check_TP_MW_IBCF_100Trying_01(vc_vxlte_monitor_components.mwBE, -, v_sip); - + + f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB); // Event 11 + f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) f_mtc_check_TP_IC_IBCF_INVITE_03(vc_vxlte_monitor_components.ic); // INVITE ENUM Event 8 - f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 13 // 183 Session Progress - f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwBE, -, v_sip); // Event 14 + f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic, -); // 183 Event 13 + f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 14 f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 - + //Rx/Gx exchange after 183(SDP) was received at P-CSCF f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16 f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 17 f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 18 f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 - - f_mtc_check_TP_IC_IBCF_180RINGING_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 22 - f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwBE, -, v_sip); // Event 23 + + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic); // 180 Ringing – Event 22 + f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 - + f_mtc_userCheckRinging(v_psap); f_mtc_userCheckPeerIsRinging(v_ueA); f_mtc_userAnswerCall(v_psap); - + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 26 f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 26 f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 26 - f_mtc_check_TP_MW_IBCF_200OK_01(vc_vxlte_monitor_components.mwBE, -, v_sip); // Event 27 + f_mtc_check_TP_MW_IBCF_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 27 f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 28 f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 30 f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 31 - f_mtc_check_TP_MW_IBSCF_ACK_01(vc_vxlte_monitor_components.mwBE, -, v_sip); // Event 32 + f_mtc_check_TP_MW_IBCF_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 32 f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 33 f_mtc_userCheckCallEstablished(v_ueA); // Event 34 f_mtc_userCheckCallEstablished(v_psap); // Event 34 - + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -859,13 +866,13 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_INI_05 - + group f_TD_VoLTE_ECO_INT_INI_05 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_05() runs on ImsTestCoordinator { log("If the test case fails, please check the preconditions"); } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_05 - + } // End of f_TD_VoLTE_ECO_INT_INI_05 /** @@ -879,47 +886,111 @@ 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 ); - + 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_MW_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_IC_INTERFACENAME, // IBCF -> IMS_B -> PSAP - PX_SIP_ML_LRF_INTERFACENAME // E-CSCF -> LRF: mlE_LTF + PX_SIP_ML_E_LRF_INTERFACENAME // E-CSCF -> LRF: mlE_LRF })) { 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_userRegistration(v_ueA, v_userInfoA); + 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_06(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - - f_mtc_userCheckCallEstablished(v_ueA); // Event 34 - f_mtc_userCheckCallEstablished(v_psap); // Event 34 - + + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 + + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + // FIXME f_mtc_check_TP_MW_IBCF_xxx <--> f_mtc_check_TP_ML_EBCF_xxx + f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mlE_LRF); // Event 11 + f_mtc_check_TP_MX_LRF_3xxAny_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 12 + + f_mtc_check_TP_MW_IBCF_INVITE_02(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 13 + f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 14 + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 14 + f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 15 + + + // 183 Session Progress + f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 + f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 + f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 24 + + //Rx/Gx exchange after 183(SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 18 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 19 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 20 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 21 + + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 24 + f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 25 + f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 26 + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 27 + + f_mtc_userCheckRinging(v_psap); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_psap); + + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 28 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 28 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 28 + + f_mtc_check_TP_MW_IBCF_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 29 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 31 + + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 32 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 33 + f_mtc_check_TP_MW_IBCF_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 35 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 36 + f_mtc_userCheckCallEstablished(v_psap); // Event 36 + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -930,14 +1001,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_INI_06 - + group f_TD_VoLTE_ECO_INT_INI_06 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_06() 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_INI_06 - + } // End of group f_TD_VoLTE_ECO_INT_INI_06 /** @@ -950,40 +1021,97 @@ 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 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 -> BGCF + PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> 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); - // PSAP is not known from the IMS A + f_mtc_userRegistration(v_ueA, v_userInfoA); + 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_07(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body - // TODO - + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + f_mtc_check_TP_MI_BGCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11 + f_mtc_check_TP_MI_BGCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 12 + + // 183 Session Progress + f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13 + f_mtc_check_TP_MI_BGCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 14 + f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15 + f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20 + + //Rx/Gx exchange after 183(SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 16 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 17 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 18 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 19 + + f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 22 + f_mtc_check_TP_MI_BGCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 + f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 + + f_mtc_userCheckRinging(v_psap); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_psap); + + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK – Event 26 + f_mtc_check_TP_MI_BGCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 27 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 28 + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 + + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 30 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 31 + f_mtc_check_TP_MI_BGCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 32 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 33 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 34 + f_mtc_userCheckCallEstablished(v_psap); // Event 34 + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -994,14 +1122,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_INI_07 - + group f_TD_VoLTE_ECO_INT_INI_07 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_07() 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_INI_07 - + } // End of group f_TD_VoLTE_ECO_INT_INI_07 /** @@ -1014,117 +1142,184 @@ 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 ); - + 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 -> BGCF - PX_SIP_ML_LRF_INTERFACENAME // E-CSCF -> LRF: mlE_LTF + PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> BGCF + PX_SIP_ML_E_LRF_INTERFACENAME // E-CSCF -> LRF: mlE_LRF })) { 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_userRegistration(v_ueA, v_userInfoA); + 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_08(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - - f_mtc_userCheckCallEstablished(v_ueA); // Event 34 - f_mtc_userCheckCallEstablished(v_psap); // Event 34 - - // Postamble - f_mtc_EndCall(v_ueA); - f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_psap); - //f_cf_int_call_down(v_config); - - //unmap/disconnect component ports - f_cf_user_down ( v_psap ); - f_cf_user_down ( v_ueA ); - f_cf_VxLteMonitor_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_INI_08 - - group f_TD_VoLTE_ECO_INT_INI_08 { - - function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_08() 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_INI_08 - - } // End of group f_TD_VoLTE_ECO_INT_INI_08 + f_mtc_check_TP_GM_PCSCF_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 4 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5 + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8 + //f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9 + + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + // FIXME f_mtc_check_TP_MW_IBCF_xxx <--> f_mtc_check_TP_ML_EBCF_xxx + f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mlE_LRF); // Event 11 + f_mtc_check_TP_MX_LRF_3xxAny_01(vc_vxlte_monitor_components.mlE_LRF, -, v_sip); // Event 12 + + f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB); // Event 13 + f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic, true); // INVITE Event 14 + f_mtc_check_TP_IC_IBCF_INVITE_02(vc_vxlte_monitor_components.ic, true); // INVITE Event 14 + f_mtc_check_TP_IC_IBCF_183RESP_01(vc_vxlte_monitor_components.ic,-); // 183 Event 15 + + // 183 Session Progress + f_mtc_check_TP_MW_IBCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 + f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 + f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 24 + + //Rx/Gx exchange after 183(SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 18 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 19 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 20 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 21 + + f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.ic, true); // 180 Ringing – Event 24 + f_mtc_check_TP_MW_IBCF_180RINGING_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 25 + f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 26 + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 27 + + f_mtc_userCheckRinging(v_psap); + f_mtc_userCheckPeerIsRinging(v_ueA); + f_mtc_userAnswerCall(v_psap); + + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 28 + f_mtc_check_TP_IC_IBCF_2XXRESP_02(vc_vxlte_monitor_components.ic, true); // 200 OK – Event 28 + f_mtc_check_TP_IC_IBCF_2XXRESP_03(vc_vxlte_monitor_components.ic); // 200 OK – Event 28 + + f_mtc_check_TP_MW_IBCF_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 29 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 31 + + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 32 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 33 + f_mtc_check_TP_MW_IBCF_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic); // ACK – Event 35 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 36 + f_mtc_userCheckCallEstablished(v_psap); // Event 36 + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_psap); + //f_cf_int_call_down(v_config); + + //unmap/disconnect component ports + f_cf_user_down ( v_psap ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_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_INI_08 + + group f_TD_VoLTE_ECO_INT_INI_08 { + + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_08() 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_INI_08 + + } // End of group f_TD_VoLTE_ECO_INT_INI_08 + + + /** + * @desc + * @see ETSI TS 103 795-2 Clause 5.3.1.10 UE calling PSAP over AS with non-emergency registration + */ + testcase TD_VoLTE_ECO_INT_INI_09() runs on ImsTestCoordinator system IotSystemInterface { - /** - * @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered. - * @see ETSI TS 103 795-2 Clause 5.3.1.5 Callback from PSAP - @remark Opetion 1: PSAP is in IMS A netwwork - */ - testcase TD_VoLTE_ECO_INT_INI_09_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 ); - + 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 + PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_MM_B_PSAP_INTERFACENAME })) { 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_userRegistration(v_ueA, v_userInfoA); + 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_09_01(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); // TODO - + f_mtc_userCheckCallEstablished(v_ueA); // Event 34 f_mtc_userCheckCallEstablished(v_psap); // Event 34 - + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -1134,67 +1329,98 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_INI_09_01 - - group f_TD_VoLTE_ECO_INT_INI_09_01 { - + } // End of TC TD_VoLTE_ECO_INT_INI_09 + + group f_TD_VoLTE_ECO_INT_INI_09 { + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_09_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_INI_09_01 - - } // End of group f_TD_VoLTE_ECO_INT_INI_09_01 + } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_09 + + } // End of group f_TD_VoLTE_ECO_INT_INI_09 /** * @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered. - * @see ETSI TS 103 795-2 Clause 5.3.1.5 Callback from PSAP - @remark Opetion 2: PSAP is not in IMS A netwwork + * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP + * @remark Ipetion 1: PSAP in IMS A */ - testcase TD_VoLTE_ECO_INT_INI_09_02() runs on ImsTestCoordinator system IotSystemInterface { + testcase TD_VoLTE_ECO_INT_INI_10_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 ); - + 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_IC_INTERFACENAME // IBCF -> IMS -> PSAP + PX_SIP_MW_EB_INTERFACENAME // E-CSCF -> BGCF })) { 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_check_precond_TD_VoLTE_ECO_INT_INI_09_02(); - + f_mtc_userRegistration(v_ueA, v_userInfoA); + if (PX_PSAP_REGISTERED) { + f_mtc_userRegistration(v_psap, v_infoPsap); + } else { + // TODO Check OPTIONS from PSAP to E-CSCF + } + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_10_01(); + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - - f_mtc_userCheckCallEstablished(v_ueA); // Event 34 - f_mtc_userCheckCallEstablished(v_psap); // Event 34 - + + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // INVITE Event 1 + f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 7 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + // 183 Session Progress + f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 8 + f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 9 + f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 10 + + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 16 + f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 + f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 20 + + f_mtc_userCheckRinging(v_ueA); // Event 15 + f_mtc_userCheckPeerIsRinging(v_psap); // Event 15 + f_mtc_userAnswerCall(v_ueA); // Event 26 + + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 21 + + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 22 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 35 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 36 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 37 + f_mtc_userCheckCallEstablished(v_psap); // Event 37 + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -1204,66 +1430,176 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_INI_09_02 - - group f_TD_VoLTE_ECO_INT_INI_09_02 { - - function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_09_02() runs on ImsTestCoordinator { + } // End of TC TD_VoLTE_ECO_INT_INI_10_01 + + group f_TD_VoLTE_ECO_INT_INI_10_01 { + + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_10_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_INI_09_02 - - } // End of group f_TD_VoLTE_ECO_INT_INI_09_02 + } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_10_01 + + } // End of group f_TD_VoLTE_ECO_INT_INI_10_01 /** * @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered. - * @see ETSI TS 103 795-2 Clause 5.3.1.5 Callback from PSAP - @remark Opetion 2: PSAP is in PSTN netwwork + * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP + * @remark Ipetion 1: PSAP NOT in IMS A */ - testcase TD_VoLTE_ECO_INT_INI_09_03() runs on ImsTestCoordinator system IotSystemInterface { + testcase TD_VoLTE_ECO_INT_INI_10_02() 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 ); - + 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_SIP_MW_PE_INTERFACENAME, + PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_IC_INTERFACENAME // IBCF -> IMS_B -> 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); + 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_10_02(); + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + + // Test body + //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); + + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // Event 21 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.ic, -, v_sip); + + f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB); // Event 3 + f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + f_mtc_check_TP_GM_PCSCF_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 7 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + // 183 Session Progress + f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 8 + f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 9 + f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 10 + + f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 16 + f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 + f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 180 Ringing – Event 20 + + f_mtc_userCheckRinging(v_ueA); // Event 15 + f_mtc_userCheckPeerIsRinging(v_psap); // Event 15 + f_mtc_userAnswerCall(v_ueA); // Event 26 + + f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10 + f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 21 + + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 22 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 35 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 36 + + f_mtc_userCheckCallEstablished(v_ueA); // Event 37 + f_mtc_userCheckCallEstablished(v_psap); // Event 37 + + // Postamble + f_mtc_EndCall(v_ueA); + f_PO_user_home_deregistration(v_ueA); + f_PO_user_home_deregistration(v_psap); + //f_cf_int_call_down(v_config); + + //unmap/disconnect component ports + f_cf_user_down ( v_psap ); + f_cf_user_down ( v_ueA ); + f_cf_VxLteMonitor_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_INI_10_02 + + group f_TD_VoLTE_ECO_INT_INI_10_02 { + + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_10_02() 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_INI_10_02 + + } // End of group f_TD_VoLTE_ECO_INT_INI_10_02 + + /** + * @desc To demonstrate that if an emergency call has been terminated, the attempt by the PSAP call taker to communicate back to the emergency caller shall be answered. + * @see ETSI TS 103 795-2 Clause 5.3.1.11 Callback from PSAP + * @remark Ipetion 1: PSAP in PSTN A + */ + testcase TD_VoLTE_ECO_INT_INI_10_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 -> BGCF + PX_SIP_MW_EB_INTERFACENAME // E-CSCF -> BGCF })) { 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_check_precond_TD_VoLTE_ECO_INT_INI_09_03(); - + f_mtc_userRegistration(v_ueA, v_userInfoA); + 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_10_03(); + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); // TODO - + f_mtc_userCheckCallEstablished(v_ueA); // Event 34 f_mtc_userCheckCallEstablished(v_psap); // Event 34 - + // Postamble f_mtc_EndCall(v_ueA); f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_psap); //f_cf_int_call_down(v_config); - + //unmap/disconnect component ports f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); @@ -1273,16 +1609,16 @@ module AtsImsIot_Emergency { setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs") } f_cf_adapter_down ( ); - } // End of TC TD_VoLTE_ECO_INT_INI_09_03 - - group f_TD_VoLTE_ECO_INT_INI_09_03 { - - function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_09_03() runs on ImsTestCoordinator { + } // End of TC TD_VoLTE_ECO_INT_INI_10_03 + + group f_TD_VoLTE_ECO_INT_INI_10_03 { + + function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_10_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_INI_09_03 - - } // End of group f_TD_VoLTE_ECO_INT_INI_09_03 + } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_10_03 + + } // End of group f_TD_VoLTE_ECO_INT_INI_10_03 } // End of group EmergencySessionEstablishment @@ -1291,74 +1627,70 @@ module AtsImsIot_Emergency { /** * @desc To perform originating UE session release and the tear down of related dedicated bearers. * @see ETSI TS 103 795-2 Clause 5.3.3.1 UE Initiated Emergency Session Release - * @remark This is option 1: PSAP is in IMA A network + * @remark This is option 1: PSAP is in IMS A network */ 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 ); - + 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 + PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> 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_userRegistration(v_ueA, v_userInfoA); + 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_REL_01_01(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // 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_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 f_mtc_check_TP_MW_PCSCF_ECO_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_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwB_PSAP); // Event 6 + f_mtc_check_TP_MM_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 4 //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_PCSCF_ECO_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 - + + f_mtc_check_TP_MW_IBCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19 + + f_mtc_userCheckCallTerminated(v_ueA); // Event 20 + f_mtc_userCheckCallCancelled(v_psap); // Event 21 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1368,14 +1700,14 @@ module AtsImsIot_Emergency { } 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 /** @@ -1384,71 +1716,69 @@ module AtsImsIot_Emergency { * @remark This is option 2: PSAP is not in IMS A network */ testcase TD_VoLTE_ECO_INT_REL_01_02 ( ) 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 ); - + 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_MW_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_IC_INTERFACENAME // IBCF -> IMS_B -> 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_userRegistration(v_ueA, v_userInfoA); + 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_REL_01_02(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // 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_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 f_mtc_check_TP_MW_PCSCF_ECO_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_IC_IBCF_BYE_01(vc_vxlte_monitor_components.ic); // Event 6 + f_mtc_check_TP_MW_IBCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 5 + f_mtc_check_TP_IC_IBCF_ECO_BYE_01(vc_vxlte_monitor_components.ic); // 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_PCSCF_ECO_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_check_TP_MW_IBCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 15 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18 + f_mtc_check_TP_GM_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19 + f_mtc_userCheckCallTerminated(v_ueA); // Event 22 - f_mtc_userCheckCallCancelled(v_ueB); // Event 23 - + f_mtc_userCheckCallCancelled(v_psap); // Event 23 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1458,13 +1788,13 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_REL_01_02 - + group f_TD_VoLTE_ECO_INT_REL_01_02 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_02() runs on ImsTestCoordinator { log("If the test case fails, please check the preconditions"); } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_01_02 - + } // End of f_TD_VoLTE_ECO_INT_REL_01_02 /** @@ -1477,52 +1807,63 @@ 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 ); - + 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 -> BGCF + PX_SIP_MW_PE_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> 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_userRegistration(v_ueA, v_userInfoA); + if (PX_PSAP_REGISTERED) { + f_mtc_userRegistration(v_psap, v_infoPsap); + } else { + // TODO Check OPTIONS from PSAP to E-CSCF + } + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // 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_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 + f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 3 + f_mtc_check_TP_MI_BGCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 7 + + //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_MI_BGCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 17 + f_mtc_check_TP_MW_PCSCF_ECO_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 - + f_mtc_userCheckCallCancelled(v_psap); // Event 23 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1532,14 +1873,14 @@ module AtsImsIot_Emergency { } 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 /** @@ -1552,53 +1893,52 @@ 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 ); - + 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 + PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> 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_userRegistration(v_ueA, v_userInfoA); + 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_REL_02_01(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); // TODO - + f_mtc_userCheckCallTerminated(v_ueA); // Event 21 - f_mtc_userCheckCallCancelled(v_ueB); // Event 20 - + f_mtc_userCheckCallCancelled(v_psap); // Event 20 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1608,14 +1948,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_REL_02_01 - + group f_TD_VoLTE_ECO_INT_REL_02_01 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_02_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_02_01 - + } // End of group f_TD_VoLTE_ECO_INT_REL_02_01 /** @@ -1628,53 +1968,52 @@ 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 ); - + 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_MW_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_IC_INTERFACENAME // IBCF -> IMS })) { 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_userRegistration(v_ueA, v_userInfoA); + 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_REL_02_02(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); // TODO - + f_mtc_userCheckCallTerminated(v_ueA); // Event 21 - f_mtc_userCheckCallCancelled(v_ueB); // Event 20 - + f_mtc_userCheckCallCancelled(v_psap); // Event 20 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1684,14 +2023,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_REL_02_02 - + group f_TD_VoLTE_ECO_INT_REL_02_02 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_02_02() 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_02_02 - + } // End of group f_TD_VoLTE_ECO_INT_REL_02_02 /** @@ -1705,52 +2044,51 @@ 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 ); - + 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 -> BGCF + PX_SIP_MW_EB_INTERFACENAME // E-CSCF -> BGCF })) { 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_userRegistration(v_ueA, v_userInfoA); + 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_REL_02_03(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); // TODO - + f_mtc_userCheckCallTerminated(v_ueA); // Event 21 - f_mtc_userCheckCallCancelled(v_ueB); // Event 20 - + f_mtc_userCheckCallCancelled(v_psap); // Event 20 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1760,14 +2098,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_REL_02_03 - + group f_TD_VoLTE_ECO_INT_REL_02_03 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_02_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_02_03 - + } // End of group f_TD_VoLTE_ECO_INT_REL_02_03 } // End of group EmergencySessionRelease @@ -1777,60 +2115,77 @@ module AtsImsIot_Emergency { /** * @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A. * @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort - * @remark This is option 1: PSAP is in IMA A network + * @remark This is option 1: PSAP is in IMS A network */ testcase TD_VoLTE_ECO_INT_ABT_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 ); - + 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 + PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> 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_userRegistration(v_ueA, v_userInfoA); + 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_ABT_01_01(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - + f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + + //Rx/Gx exchange after CANCEL was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 2 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 3) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 4) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5) + + f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 7 + + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 + + f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 + f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 + + f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 28 + f_mtc_userCheckCallTerminated(v_ueA); // Event 33 - f_mtc_userCheckCallCancelled(v_ueB); // Event 34 - + f_mtc_userCheckCallCancelled(v_psap); // Event 34 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1840,73 +2195,97 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_ABT_01_01 - + group f_TD_VoLTE_ECO_INT_ABT_01_01 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_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_ABT_01_01 - + } // End of group f_TD_VoLTE_ECO_INT_ABT_01_01 /** * @desc To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A. * @see ETSI TS 103 795-2 Clause 5.3.4.1 Emergency Session Abort - * @remark This is option 1: PSAP is not in IMA A network + * @remark This is option 1: PSAP is not in IMS A network */ testcase TD_VoLTE_ECO_INT_ABT_01_02() 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 ); - + 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_MW_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> 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_userRegistration(v_ueA, v_userInfoA); + 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_ABT_01_02(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - + f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + + //Rx/Gx exchange after CANCEL was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 2 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 3) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 4) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5) + + f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MW_IBCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 9 + f_mtc_check_TP_IC_IBCF_CANCEL_01(vc_vxlte_monitor_components.ic, true); // CANCEL Event 10 (NOTE: comment out if ISC simulated by Ic) + + f_mtc_check_TP_IC_IBCF_2XXRESP_01(vc_vxlte_monitor_components.ic); // 200 CANCEL – Event 11 + f_mtc_check_TP_MW_IBCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 12 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 + + f_mtc_check_TP_IC_IBCF_487INVITE_01(vc_vxlte_monitor_components.ic); // Event 20 + f_mtc_check_TP_MW_IBCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 21 + f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 + f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 + + f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27 + f_mtc_check_TP_MW_IBCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 29 + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.ic, true); // Event 30 + f_mtc_userCheckCallTerminated(v_ueA); // Event 33 - f_mtc_userCheckCallCancelled(v_ueB); // Event 34 - + f_mtc_userCheckCallCancelled(v_psap); // Event 34 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1916,14 +2295,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_ABT_01_02 - + group f_TD_VoLTE_ECO_INT_ABT_01_02 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_02() 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_ABT_01_02 - + } // End of group f_TD_VoLTE_ECO_INT_ABT_01_02 /** @@ -1936,53 +2315,76 @@ 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 ); - + 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_MW_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> 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_userRegistration(v_ueA, v_userInfoA); + 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_ABT_01_03(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - + f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1 + + //Rx/Gx exchange after CANCEL was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 2 + f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 3) + f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 4) + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5) + + f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6 + f_mtc_check_TP_MI_BGCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 13 + f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 14 + + f_mtc_check_TP_MI_BGCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 16 + f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17 + f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18 + + f_mtc_check_TP_MM_ECSCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 22 + f_mtc_check_TP_MI_BGCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 23 + f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24 + f_mtc_check_TP_GM_PCSCF_487INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25 + + f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27 + f_mtc_check_TP_MI_BGCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 31 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 32 + f_mtc_userCheckCallTerminated(v_ueA); // Event 33 - f_mtc_userCheckCallCancelled(v_ueB); // Event 34 - + f_mtc_userCheckCallCancelled(v_psap); // Event 34 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -1992,73 +2394,104 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_ABT_01_03 - + group f_TD_VoLTE_ECO_INT_ABT_01_03 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_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_ABT_01_03 - + } // End of group f_TD_VoLTE_ECO_INT_ABT_01_03 /** * @desc To demonstrate interaction between UE A and PSAP when an emergency session is rejected. * @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject - * @remark This is option 1: PSAP is in IMA A network + * @remark This is option 1: PSAP is in IMS A network */ testcase TD_VoLTE_ECO_INT_REJ_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 ); - + 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 + PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF + PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> 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_userRegistration(v_ueA, v_userInfoA); + 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_REJ_01_01(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 3 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - - f_mtc_userCheckCallTerminated(v_ueA); // Event 33 - f_mtc_userCheckCallCancelled(v_ueB); // Event 34 - + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 3 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 4 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 5 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 6 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 7 + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 8,9 + f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 10,11 + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 12 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11 + + // 480 Temporary Unvailable + f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 480 Temporary Unavailables Event 14 + f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 + + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 24 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 25 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 26 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 27 + + f_mtc_check_TP_GM_PCSCF_480TEMPAV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 + + f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 31 + + f_mtc_userCheckCallTerminated(v_ueA); // Event 36 + f_mtc_userCheckCallCancelled(v_psap); // Event 37 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -2068,73 +2501,104 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_REJ_01_01 - + group f_TD_VoLTE_ECO_INT_REJ_01_01 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_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_REJ_01_01 - + } // End of group f_TD_VoLTE_ECO_INT_REJ_01_01 /** * @desc To demonstrate interaction between UE A and PSAP when an emergency session is rejected. * @see ETSI TS 103 795-2 5.3.4.3 Emergency Session Reject - * @remark This is option 1: PSAP is not in IMA A network + * @remark This is option 1: PSAP is not in IMS A network */ testcase TD_VoLTE_ECO_INT_REJ_01_02() 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 ); - + 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_MW_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> 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_userRegistration(v_ueA, v_userInfoA); + 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_REJ_01_02(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 3 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - - f_mtc_userCheckCallTerminated(v_ueA); // Event 33 - f_mtc_userCheckCallCancelled(v_ueB); // Event 34 - + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 3 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 4 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 5 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 6 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 7 + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 8,9 + f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 10,11 + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 12 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11 + f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + + f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) + + // 480 Temporary Unavailable + f_mtc_check_TP_IC_IBCF_480TEMPAV_01(vc_vxlte_monitor_components.ic, -, v_sip); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) + f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 + + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 24 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 25 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 26 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 27 + + f_mtc_check_TP_GM_PCSCF_480TEMPAV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 + + f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 + f_mtc_check_TP_IC_IBCF_ACK_01(vc_vxlte_monitor_components.mmB_PSAP); // Event 31 + + f_mtc_userCheckCallTerminated(v_ueA); // Event 36 + f_mtc_userCheckCallCancelled(v_psap); // Event 37 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -2144,14 +2608,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_REJ_01_02 - + group f_TD_VoLTE_ECO_INT_REJ_01_02 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_02() 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_REJ_01_02 - + } // End of group f_TD_VoLTE_ECO_INT_REJ_01_02 /** @@ -2164,53 +2628,85 @@ 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 ); - + 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_MW_EB_INTERFACENAME, // E-CSCF -> IBCF PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> 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_userRegistration(v_ueA, v_userInfoA); + 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_REJ_01_03(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); - // TODO - + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 3 + f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip); + + //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF + f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 4 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 5 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 6 + f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 7 + f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 8,9 + f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 10,11 + + f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 12 + f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); + + f_mtc_check_TP_MI_BGCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 19 + f_mtc_check_TP_MI_BGCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); + f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 20 + + // 480 Temporary Unavailable + f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 21 + f_mtc_check_TP_MI_BGCF_ECO_480TEMPAV_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 22 + f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 + + f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 24 + f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 25 + f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx); // Event 26 + f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // Event 27 + + f_mtc_check_TP_GM_PCSCF_480TEMPAV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 28 + + f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 29 + f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 30 + f_mtc_check_TP_MI_BGCF_ECO_ACK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 34 + f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 35 + f_mtc_userCheckCallTerminated(v_ueA); // Event 33 - f_mtc_userCheckCallCancelled(v_ueB); // Event 34 - + f_mtc_userCheckCallCancelled(v_psap); // Event 34 + // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -2220,14 +2716,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_REJ_01_03 - + group f_TD_VoLTE_ECO_INT_REJ_01_03 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_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_REJ_01_03 - + } // End of group f_TD_VoLTE_ECO_INT_REJ_01_03 /** @@ -2239,53 +2735,45 @@ 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 ); - + 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 + PX_DIAMETER_GX_INTERFACENAME })) { 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_userRegistration(v_ueA, v_userInfoA); + 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_REJ_02(); - + f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1 + // Test body - //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB); + f_mtc_check_TP_GM_PCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1 + f_mtc_check_TP_GM_PCSCF_480TEMPAV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2 + f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 3 - // TODO - - f_mtc_userCheckCallTerminated(v_ueA); // Event 33 - f_mtc_userCheckCallCancelled(v_ueB); // Event 34 - // Postamble f_PO_user_home_deregistration(v_ueA); - f_PO_user_home_deregistration(v_ueB); - + f_PO_user_home_deregistration(v_psap); + //unmap/disconnect component ports - f_cf_user_down ( v_ueB ); + f_cf_user_down ( v_psap ); f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); f_cf_adapter_down ( ); @@ -2295,14 +2783,14 @@ module AtsImsIot_Emergency { } f_cf_adapter_down ( ); } // End of TC TD_VoLTE_ECO_INT_REJ_02 - + group f_TD_VoLTE_ECO_INT_REJ_02 { - + function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_02() 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_REJ_02 - + } // End of group f_TD_VoLTE_ECO_INT_REJ_02 } // End of group EmergencySessionAbortOrReject @@ -2321,15 +2809,15 @@ module AtsImsIot_Emergency { * @see ETSI TS 103 795-2 Clause 5.5.1 UE Emergency Network Detachment (with/without Emergency Registration) */ testcase TC_VoLTE_ECO_INT_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { - + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); - + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){ - f_cf_createVxLteMonitor(); - + f_cf_createVxLteMonitor(); + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); @@ -2341,9 +2829,9 @@ module AtsImsIot_Emergency { // test body // Check that user A starts initial network attachment f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3) - + //postamble - + //unmap/disconnect component ports f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); @@ -2359,15 +2847,15 @@ module AtsImsIot_Emergency { * @see ETSI TS 103 795-2 Clause 5.5.2 UE Emergency Network Detachment with Previously Established Emergency Registration & Emergency Session */ testcase TC_VoLTE_ECO_INT_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface { - + var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY ); - + f_setVxLteMonIterfacesAvailability(); //Check required monitor interfaces due to TD if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){ - f_cf_createVxLteMonitor(); - + f_cf_createVxLteMonitor(); + // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); @@ -2378,9 +2866,9 @@ module AtsImsIot_Emergency { f_mtc_userRadioEnabled ( v_ueA, false, true ); // test body // TODO - + //postamble - + //unmap/disconnect component ports f_cf_user_down ( v_ueA ); f_cf_VxLteMonitor_Down(); diff --git a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn index 9a94e23..19f0bd1 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Functions.ttcn @@ -6,7 +6,7 @@ module AtsImsIot_Functions { //LibDiameter - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;} + import from LibDiameter_TypesAndValues all; //LibSip import from LibSip_SIPTypesAndValues all; @@ -15,22 +15,22 @@ module AtsImsIot_Functions { import from LibIms_UpperTester all; //LibIot - import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } + import from LibIot_PIXITS all; import from LibIot_VxLTE_PIXITS all; - import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } - import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } - import from LibIot_Functions { function f_getE2EVerdict; } - import from LibIot_TypesAndValues { type DefaultList, MonitorInterfaceInfo; } - import from LibIot_VxLTE_Functions {function f_SipMonitorInterface_available,f_DiameterMonitorInterface_available;} + import from LibIot_Functions all; + import from LibIot_TestInterface all; + import from LibIot_Functions all; + import from LibIot_TypesAndValues all; + import from LibIot_VxLTE_Functions all; //LibUpperTester import from LibUpperTester all; //AtsImsIot - import from AtsImsIot_Templates { template mw_EnumQuery_Base, mw_EnumResponse_Base, mw_SIP_URI_Base; } + import from AtsImsIot_Templates all; import from AtsImsIot_TestSystem all; - import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType, DiameterMessageList, SkipTypeDiameter;} + import from AtsImsIot_TestSystem all; + import from AtsImsIot_TypesAndValues all; group ue { diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn index ca42c58..7b10a47 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_ATT.ttcn @@ -9,15 +9,15 @@ module AtsImsIot_TD_ATT{ // LibCommon // LibSip // LibIms - import from LibIms_UpperTester { type ImsUserInfo }; + import from LibIms_UpperTester all; // LibIot - import from LibIot_TestInterface { type IotEquipmentUser }; - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; + import from LibIot_TestInterface all; + import from LibIot_TestConfiguration all; import from LibIot_PIXITS all; import from LibIot_VxLTE_PIXITS all; import from LibIot_VxLTE_Functions all; // LibImsIot - import from AtsImsIot_Functions { function f_getImUser}; + import from AtsImsIot_Functions all; // ImsIot import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn index 0dd94a7..c3d3639 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DRG.ttcn @@ -9,15 +9,15 @@ module AtsImsIot_TD_DRG{ // LibCommon // LibSip // LibIms - import from LibIms_UpperTester { type ImsUserInfo }; + import from LibIms_UpperTester all; // LibIot - import from LibIot_TestInterface { type IotEquipmentUser }; - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_TestInterface all; + import from LibIot_TestConfiguration all; + import from LibIot_PIXITS all; import from LibIot_VxLTE_PIXITS all; import from LibIot_VxLTE_Functions all; // LibImsIot - import from AtsImsIot_Functions { function f_getImUser }; + import from AtsImsIot_Functions all; // ImsIot import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn index a88b3f0..066a4d2 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_DTC.ttcn @@ -9,15 +9,15 @@ module AtsImsIot_TD_DTC{ // LibCommon // LibSip // LibIms - import from LibIms_UpperTester { type ImsUserInfo }; + import from LibIms_UpperTester all; // LibIot - import from LibIot_TestInterface { type IotEquipmentUser }; - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_TestInterface all; + import from LibIot_TestConfiguration all; + import from LibIot_PIXITS all; import from LibIot_VxLTE_PIXITS all; import from LibIot_VxLTE_Functions all; // LibImsIot - import from AtsImsIot_Functions { function f_getImUser }; + import from AtsImsIot_Functions all; // ImsIot import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn index a41eada..ad9f369 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_INI.ttcn @@ -11,17 +11,15 @@ module AtsImsIot_TD_INI{ // LibCommon // LibSip // LibIms - import from LibIms_UpperTester {type ImsUserInfo;} + import from LibIms_UpperTester all; // LibIot - import from LibIot_TestInterface {type IotEquipmentUser;} - import from LibIot_TestConfiguration { - function f_cf_create_IotEquipmentUser; - } - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C;} + import from LibIot_TestInterface all; + import from LibIot_TestConfiguration all; + import from LibIot_PIXITS all; import from LibIot_VxLTE_PIXITS all; import from LibIot_VxLTE_Functions all; // LibImsIot - import from AtsImsIot_Functions {function f_getImUser;} + import from AtsImsIot_Functions all; // ImsIot import from AtsImsIot_TypesAndValues all; import from AtsImsIot_TestConfiguration all; @@ -2440,7 +2438,7 @@ module AtsImsIot_TD_INI{ //MwPS TP_MW_PCSCF_INVITE_04 (Event 4) f_mtc_check_TP_IC_IBCF_INVITE_04(vc_vxlte_monitor_components.ic, false); // (INVITE – Event 3) f_mtc_check_TP_IC_IBCF_100TRY_01(vc_vxlte_monitor_components.ic, false); // (INVITE, 100 Trying – Event 3) - f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS); // (Event 4) + f_mtc_check_TP_MW_PCSCF_INVITE_04(vc_vxlte_monitor_components.mwPS, -, v_sip); // (Event 4) //Rx/Gx/S9 exchange after INVITE was received at P-CSCF diff --git a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn index bde4e54..51a6fd1 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TD_REG.ttcn @@ -9,15 +9,15 @@ module AtsImsIot_TD_REG{ // LibCommon // LibSip // LibIms - import from LibIms_UpperTester { type ImsUserInfo }; + import from LibIms_UpperTester all; // LibIot - import from LibIot_TestInterface { type IotEquipmentUser }; - import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser }; - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_EUT_C }; + import from LibIot_TestInterface all; + import from LibIot_TestConfiguration all; + import from LibIot_PIXITS all; import from LibIot_VxLTE_PIXITS all; import from LibIot_VxLTE_Functions all; // LibImsIot - import from AtsImsIot_Functions { function f_getImUser }; + import from AtsImsIot_Functions all; // ImsIot import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn index 3d3f7a4..176d04c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_CX.ttcn @@ -9,21 +9,21 @@ module AtsImsIot_TP_behavior_CX // LibDiameter import from LibDiameter_Templates all; - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; + import from LibDiameter_TypesAndValues all; // LibIot - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from LibIot_PIXITS all; + import from LibIot_TestInterface all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; + import from LibIot_PIXITS all; // AtsImsIot - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; import from AtsImsIot_Diameter_Templates all; - import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + import from AtsImsIot_TestSystem all; // LibIms import from LibIms_UpperTester all; @@ -95,13 +95,15 @@ group g_HSS { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; + var template DIAMETER_MSG mw_diameter_msg_pass := { mAR_MSG := mw_MAR(mw_publicIdentity(v_publicIdentity)) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { mAR_MSG := mw_MAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{mAR_MSG := mw_MAR(mw_publicIdentity(v_publicIdentity))} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{mAR_MSG := mw_MAR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_MAA_01 - MAR", @@ -111,13 +113,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { mAA_MSG := mw_MAA }; + mw_diameter_msg_fail := { mAA_MSG := mw_MAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{mAA_MSG := mw_MAA} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{mAA_MSG := mw_MAA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_MAA_01 - MAA", @@ -183,13 +187,15 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rTR_MSG := mw_RTR }; + var template DIAMETER_MSG mw_diameter_msg_fail := { rTR_MSG := mw_RTR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{rTR_MSG := mw_RTR} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{rTR_MSG := mw_RTR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_RTA_01 - RTR", @@ -199,13 +205,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { rTA_MSG := mw_RTA }; + mw_diameter_msg_fail := { rTA_MSG := mw_RTA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{rTA_MSG := mw_RTA} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{rTA_MSG := mw_RTA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_RTA_01 - RTA", @@ -277,13 +285,15 @@ group g_HSS { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; + var template DIAMETER_MSG mw_diameter_msg_pass := { sAR_MSG := mw_SAR_Registration(mw_publicIdentity(v_publicIdentity)) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sAR_MSG := mw_SAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{sAR_MSG := mw_SAR_Registration(mw_publicIdentity(v_publicIdentity))} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{sAR_MSG := mw_SAR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_SAA_01 - SAR", @@ -293,13 +303,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { sAA_MSG := mw_SAA_userData }; + mw_diameter_msg_fail := { sAA_MSG := mw_SAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{sAA_MSG := mw_SAA_userData} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{sAA_MSG := mw_SAA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_SAA_01 - SAA", @@ -369,13 +381,15 @@ group g_HSS { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; + var template DIAMETER_MSG mw_diameter_msg_pass := { sAR_MSG := mw_SAR_UserDeregistration(mw_publicIdentity(v_publicIdentity)) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sAR_MSG := mw_SAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{sAR_MSG := mw_SAR_UserDeregistration(mw_publicIdentity(v_publicIdentity))} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{sAR_MSG := mw_SAR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_SAA_02 -SAR", @@ -385,13 +399,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { sAA_MSG := mw_SAA }; + mw_diameter_msg_fail := { sAA_MSG := mw_SAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{sAA_MSG := mw_SAA} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{sAA_MSG := mw_SAA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_SAA_02 - SAA", @@ -467,13 +483,15 @@ group g_HSS { var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; //"sip:"&v_userInfoA.publicId&@&v_userInfoA.domain + var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR_Registration(mw_publicIdentity(v_publicIdentity)) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration(mw_publicIdentity(v_publicIdentity))} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_01 - UAR", @@ -483,13 +501,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamFirstRegistration }; + mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamFirstRegistration} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_01 - UAA", @@ -564,13 +584,15 @@ group g_HSS { var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; //"sip:"&v_userInfoA.publicId&@&v_userInfoA.domain + var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR_Registration(mw_publicIdentity(v_publicIdentity)) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR_Registration(mw_publicIdentity(v_publicIdentity))} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_01 - UAR", @@ -580,13 +602,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamFirstRegistration }; + mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamFirstRegistration} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_01 - UAA", @@ -644,13 +668,16 @@ group g_HSS { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; + var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR(mw_publicIdentity(v_publicIdentity)) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR(mw_publicIdentity(v_publicIdentity))} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAR_MSG := mw_UAR_basic}}, + mw_diameter_msg_fail + }, {0, omit}, "TP_CX_HSS_UAA_02 - UAR", p_forward_to_mtc, @@ -659,13 +686,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamSuccess/*uAA_MSG := mw_UAA_diamSubsequentRegistration*/ }; //TODO:Check TP + mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamSuccess/*uAA_MSG := mw_UAA_diamSubsequentRegistration*/}//TODO:Check TP + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_02 - UAA", @@ -720,13 +749,15 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR_unknownPrivateId }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR_unknownPrivateId} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_03 - UAR", @@ -735,13 +766,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamErrorUserUnknown }; + mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamErrorUserUnknown} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_03 - UAA", @@ -798,13 +831,15 @@ group g_HSS { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); var charstring v_publicIdentity := "sip:"&v_userInfoA.publicId&"@"&v_userInfoA.domain; + var template DIAMETER_MSG mw_diameter_msg_pass := { uAR_MSG := mw_UAR_deRegistration(mw_publicIdentity(v_publicIdentity)) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uAR_MSG := mw_UAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAR_MSG := mw_UAR_deRegistration(mw_publicIdentity(v_publicIdentity))} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAR_MSG := mw_UAR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_04 - UAR", @@ -814,13 +849,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { uAA_MSG := mw_UAA_diamSuccess }; + mw_diameter_msg_fail := { uAA_MSG := mw_UAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uAA_MSG := mw_UAA_diamSuccess} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{uAA_MSG := mw_UAA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_CX_HSS_UAA_04 - UAA", diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn index 93f36b6..7dcd6f0 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GM.ttcn @@ -439,6 +439,65 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_REGISTER_02 + function f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_GM_PCSCF_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_02 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK( + v_sip.request.msgHeader.cSeq, + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.fromField, + v_sip.request.msgHeader.toField + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_GM_PCSCF_REGISTER_02 - 200 OK", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_REGISTER_02 + /** * @desc Verify that the P-CSCF successfully processes an invalid first registration (Unsuccessful). * Initial conditions with { @@ -1487,6 +1546,70 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_03 + function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_03( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_GM_PCSCF_INVITE_03( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_INVITE_03 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_03 + + function f_mtc_check_TP_GM_PCSCF_ECO_INVITE_04( // FIXME RMI To be reviewed + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest(mw_TP_GM_PCSCF_INVITE_04( + -, // FIXME Set expected value + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoB.publicId, v_userInfoB.domain) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_GM_PCSCF_INVITE_04 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_INVITE_04 + function f_mtc_check_TP_GM_PCSCF_INVITE_04( // FIXME RMI To be reviewed in SipInterfaceMonitor p_monitorCompRef, in boolean p_checkMessage := false, @@ -1775,6 +1898,32 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_100Trying_01 + function f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_GM_PCSCF_100Trying_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_GM_PCSCF_100Trying_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01 + /** * @desc Verify that the P-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Terminating Leg). * Initial conditions with { @@ -2305,6 +2454,38 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_200OK_01 + function f_mtc_check_TP_GM_PCSCF_ECO_200OK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + ( + mw_To_NameAddr_TelUrl({quotedString:=f_getSipUserId(PX_EUT_B).publicId}), + mw_To_AddrUnion_TelUrl(f_getTelUserId(PX_EUT_B).publicId), + p_sip.request.msgHeader.toField + ) + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_GM_PCSCF_200OK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_200OK_01 + /** * @desc Verify that the P-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). * Initial conditions with { @@ -2484,6 +2665,34 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_ACK_01 + function f_mtc_check_TP_GM_PCSCF_ECO_ACK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_ACK_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_ACK_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_ACK_01 + /** * @desc Verify that the P-CSCF successfully processes a ACK provisional response on initial INVITE (Originating Leg). * Initial conditions with { @@ -2654,6 +2863,36 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_BYE_01 + function f_mtc_check_TP_GM_PCSCF_ECO_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_BYE_01( + p_sip.request.msgHeader.callId, + -, // New CSeq + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_BYE_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_BYE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_BYE_01 + /** * @desc Verify that the P-CSCF successfully processes a BYE (Terminating Leg). * Initial conditions with { @@ -3143,6 +3382,36 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_CANCEL_01 + function f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_GM_PCSCF_CANCEL_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_GM_PCSCF_CANCEL_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01 + /** * @desc Verify that the P-CSCF successfully processes a CANCEL (Terminating Leg). * Initial conditions with { @@ -3714,6 +3983,41 @@ module AtsImsIot_TP_behavior_GM { } } // End of function f_mtc_check_TP_GM_PCSCF_487INVITE_01 + function f_mtc_check_TP_GM_PCSCF_ECO_487INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + -, // New CSeq + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField, + omit + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_487INVITE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_ECO_487INVITE_01 + /** * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) (Terminating Leg). * Initial conditions with { @@ -3845,4 +4149,35 @@ module AtsImsIot_TP_behavior_GM { } // End of group imsRequestTermination + group imsTemporaryUnavailable { + + function f_mtc_check_TP_GM_PCSCF_480TEMPAV_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_480TemporaryUnavailable(-, p_sip.request.msgHeader.cSeq)) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_GM_PCSCF_480TEMPAV_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_GM_PCSCF_480TEMPAV_01 + + } // End of group imsTemporaryUnavailable + } // End of module AtsImsIot_TP_behavior_GM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn index 4ae196b..d9a9528 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_GX.ttcn @@ -7,21 +7,21 @@ module AtsImsIot_TP_behavior_GX { - import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from AtsImsIot_TestSystem all; + import from LibIot_PIXITS all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from LibIot_TestInterface all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from LibIot_PIXITS all; import from AtsImsIot_Diameter_Templates all; // LibDiameter import from LibDiameter_Templates all; - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; + import from LibDiameter_TypesAndValues all; group g_PGW { @@ -87,13 +87,15 @@ group g_PGW { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_CCR_01 - CCR", @@ -142,13 +144,15 @@ group g_PGW { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_CCR_02 - CCR", @@ -211,13 +215,15 @@ group g_PGW { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall)} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_RAA_01 - RAR", @@ -227,13 +233,15 @@ group g_PGW { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { rAA_MSG := mw_RAA_resultCode }; + mw_diameter_msg_fail := { rAA_MSG := mw_RAA_Gx_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_RAA_01 - RAA", @@ -283,13 +291,15 @@ group g_PGW { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_Gx_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { rAR_MSG := mw_RAR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_RAA_02 - RAR", @@ -299,13 +309,15 @@ group g_PGW { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { rAA_MSG := mw_RAA_resultCode }; + mw_diameter_msg_fail := { rAA_MSG := mw_RAA_Gx_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_RAA_02 - RAA", @@ -355,13 +367,15 @@ group g_PGW { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_Gx_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { rAR_MSG := mw_RAR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_dummy} + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_RAA_03 - RAR", @@ -371,13 +385,15 @@ group g_PGW { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { rAA_MSG := mw_RAA_resultCode }; + mw_diameter_msg_fail := { rAA_MSG := mw_RAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_RAA_03 - RAA", @@ -429,13 +445,15 @@ group g_PGW { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_ChargingRuleRemove }; + var template DIAMETER_MSG mw_diameter_msg_fail := { rAR_MSG := mw_RAR_Gx_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_RAA_04 - RAR", @@ -445,13 +463,15 @@ group g_PGW { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { rAA_MSG := mw_RAA_resultCode }; + mw_diameter_msg_fail := { rAA_MSG := mw_RAA_Gx_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_Gx_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PGW_RAA_04 - RAA", @@ -534,13 +554,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5(INITIAL_REQUEST_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_CCA_01 - CCR", @@ -550,13 +572,15 @@ group g_PCRF { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { cCA_MSG := mw_CCA_resultCode }; + mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_CCA_01 - CCA", @@ -609,13 +633,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_CCA_02 - CCR", @@ -625,13 +651,15 @@ group g_PCRF { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { cCA_MSG := mw_CCA_resultCode }; + mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_CCA_02 - CCA", @@ -683,13 +711,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_RequestType(TERMINATION_REQUEST_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_CCA_03 - CCR", @@ -699,13 +729,15 @@ group g_PCRF { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { cCA_MSG := mw_CCA_resultCode }; + mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_CCA_03 - CCA", @@ -769,13 +801,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCA_MSG := mw_CCA_qosInformation_class5 }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_qosInformation_class5 } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_CCA_04 - CCA", @@ -826,13 +860,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCA_MSG := mw_CCA_resultCode }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_CCA_05 - CCA", @@ -902,13 +938,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { rAR_MSG := mw_RAR_Gx_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos)} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_RAR_01 - RAR", @@ -959,13 +997,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_ChargingRuleRemove }; + var template DIAMETER_MSG mw_diameter_msg_fail := { rAR_MSG := mw_RAR_Gx_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove} + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_RAR_02 - RAR", @@ -1033,13 +1073,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos) }; //During validation some additions may be required + var template DIAMETER_MSG mw_diameter_msg_fail := { rAR_MSG := mw_RAR_Gx_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleInstall(mw_chrgRuleInstall_Qos) } //During validation some additions may be required + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_RAR_03 - RAR", @@ -1089,13 +1131,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_ChargingRuleRemove }; //During validation some additions may be required + var template DIAMETER_MSG mw_diameter_msg_fail := { rAR_MSG := mw_RAR_Gx_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_ChargingRuleRemove } //During validation some additions may be required + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_Gx_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_RAR_04 - RAR", @@ -1166,13 +1210,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5_ES(INITIAL_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5_ES(INITIAL_REQUEST_E) } - }, - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + mw_diameter_msg_pass + }, + { + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_ECO_CCA_01 - CCR", @@ -1182,13 +1228,15 @@ group g_PCRF { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { cCA_MSG := mw_CCA_resultCode }; + mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic}; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } - }, - { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + mw_diameter_msg_pass + }, + { + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_ECO_CCA_01 - CCA", @@ -1257,13 +1305,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_SubscriberIMEI_qosInformation_class5_ES(INITIAL_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMEI_qosInformation_class5_ES(INITIAL_REQUEST_E) } - }, - { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic } + mw_diameter_msg_pass + }, + { + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_ECO_CCA_02 - CCR", @@ -1273,13 +1323,15 @@ group g_PCRF { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { cCA_MSG := mw_CCA_resultCode }; + mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode } - }, - { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic } + mw_diameter_msg_pass + }, + { + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_ECO_CCA_02 - CCA", @@ -1294,4 +1346,4 @@ group g_PCRF { } // end group g_PCRF -} // end module AtsImsIot_TP_behavior_GX \ No newline at end of file +} // end module AtsImsIot_TP_behavior_GX diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn index f46956d..0c90b1e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_IC.ttcn @@ -7,27 +7,23 @@ module AtsImsIot_TP_behavior_IC { - import from AtsImsIot_TestSystem { type SipInterfaceMonitor , ImsTestCoordinator, SipInterfaceMonitor; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from AtsImsIot_TestSystem all; + import from LibIot_PIXITS all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from LibIot_TestInterface all; + import from LibIms_UpperTester all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } + import from LibSip_Common all; import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from LibIot_PIXITS all; // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; + import from LibSip_SDPTypes all; import from AtsImsIot_Templates_IC all; @@ -897,7 +893,28 @@ module AtsImsIot_TP_behavior_IC ); p_monitorCompRef.done; } - } //function + } + + function f_mtc_check_TP_IC_IBCF_ECO_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A) + + if (isvalue(p_monitorCompRef)) { + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mdw_TP_IMS_5107_01_ic(?, mw_SipUrl_Host(v_EUT_A_Addr))) }, + { mw_SipRequest(mw_BYE_Request_Base) }, + {0, omit}, + "TP_IC_IBCF_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } /** * @desc Starts monitor component behavior @@ -1647,5 +1664,36 @@ module AtsImsIot_TP_behavior_IC } // end group g_IBCF + group imsTemporaryUnavailable { + + function f_mtc_check_TP_IC_IBCF_480TEMPAV_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_480TemporaryUnavailable(-, p_sip.request.msgHeader.cSeq)) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_IC_IBCF_480TEMPAV_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_IC_IBCF_480TEMPAV_01 + + } // End of group imsTemporaryUnavailable + } // end module AtsImsIot_TP_behavior_IC \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn index 0559a25..5b20a2a 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ISC.ttcn @@ -7,28 +7,24 @@ module AtsImsIot_TP_behavior_ISC { - import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, SipInterfaceMonitor; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIms_UpperTester {type ImsUserInfo;} - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from AtsImsIot_TestSystem all; + import from LibIot_PIXITS all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from LibIot_TestInterface all; + import from LibIms_UpperTester all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } + import from LibSip_Common all; import from AtsImsIot_Functions all; import from AtsImsIot_Templates_MW all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from LibIot_PIXITS all; // LibSip - import from LibSip_SDPTypes { type SDP_media_desc_list }; + import from LibSip_SDPTypes all; // LibMsrp // import from LibMsrp_TypesAndValues { type MsrpURI }; // import from LibMsrp_Functions { function f_str2msrpUri }; diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn new file mode 100644 index 0000000..1dc3357 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn @@ -0,0 +1,647 @@ +/* + * @author TTF T010 + * @version $Id$ + * @desc This module provides the TP behaviour functions at MI interface + */ +module AtsImsIot_TP_behavior_MI { + + // LibIms + import from LibIms_Templates all; + import from LibIms_UpperTester all; + // LibIot + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + import from LibSip_SDPTypes all; + // LibMsrp + import from LibMsrp_TypesAndValues all; + import from LibMsrp_Functions all; + import from LibMsrp_Templates all; + // AtsImsIot + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Templates_MW all; + import from AtsImsIot_Templates_MI all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_Functions all; + + group imsInvite { + + function f_mtc_check_TP_MI_BGCF_ECO_INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MI_BGCF_INVITE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId + mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MI_BGCF_INVITE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_INVITE_01 + + function f_mtc_check_TP_MI_BGCF_ECO_INVITE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MI_BGCF_INVITE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId + mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MI_BGCF_INVITE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_INVITE_02 + + } // End of group imsInvite + + group ims100Trying { + + /** + * @desc Verify that the E-CSCF successfully processes a 100 (Trying) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the PSAP entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the PSAP entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 100_Trying + * from the PSAP entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 100_Trying + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_BGCF_ECO_100Trying_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 100 TRYING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MI_BGCF_100Trying_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_100Trying_Base) }, + { 0, omit }, + "TP_MI_BGCF_100Trying_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_100Trying_01 + + } // End of group ims100Trying + + group ims180Ringing { + + /** + * @desc Verify that the IMS_E_CSCF_A successfully processes a 180 (Ringing) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the PSAP entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the PSAP entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 180_Ringing containing + * From indicating value PX_PSAP_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_PSAP_CALLID, + * Via indicating value PX_PSAP_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE + * ; + * from the PSAP entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 180_Ringing containing + * From indicating value PX_PSAP_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_PSAP_CALLID, + * Via indicating value PX_PSAP_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE + * ; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_BGCF_ECO_180RINGING_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 180 RINGING + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MI_BGCF_180Ringing_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + mw_To_NameAddr_TelUrl( + -, + p_sip.request.msgHeader.toField.addressField.addrSpecUnion.components.tel.subscriber + ))) + }, + { mw_SipResponse(mw_180Ringing_Base) }, + { 0, omit }, + "TP_MI_BGCF_180RINGING_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_180RINGING_01 + + } // End of group ims180Ringing + + group ims183SessionProgress { + + /** + * @desc Verify that the IMS_E_CSCF_A successfully processes a 183 (Ringing) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the PSAP entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the PSAP entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 183_SessionProgress containing + * From indicating value PX_SAP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_SAP_CALLID, + * Via indicating value PX_PSAP_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE + * ; + * from the PSAP entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 183_SessionProgress containing + * From indicating value PX_PSAP_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_PSAP_CALLID, + * Via indicating value PX_PSAP_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE + * ; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_BGCF_ECO_183SESSION_PROGRESS_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 183 SESSION_PROGRESS + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_TP_MI_BGCF_183SessionProgress_01( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_183SessionProgress_Base) }, + { 0, omit }, + "TP_MI_BGCF_183SESSION_PROGRESS_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_183SESSION_PROGRESS_01 + + } // End of group ims183SessionProgress + + group ims200Ok { + + /** + * @desc Verify that the IMS_E_CSCF_A successfully processes a 200 (OK) provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the PSAP entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the PSAP entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a 200_Ok containing + * From indicating value PX_PSAP_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_PSAP_CALLID, + * Via indicating value PX_PSAP_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * ; + * from the PSAP entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_PSAP_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_PSAP_CALLID, + * Via indicating value PX_PSAP_VIA, + * Route indicating value PX_PSAP_SERVICE_ROUTE, + * PChargingVector, + * PChargingFunctionAddresses, + * PPreferredIdentity + * ; + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_BGCF_ECO_200OK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); + + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + ( + mw_To_NameAddr_TelUrl({quotedString:=f_getSipUserId(PX_EUT_B).publicId}), + mw_To_AddrUnion_TelUrl(f_getTelUserId(PX_EUT_B).publicId), + p_sip.request.msgHeader.toField + ) + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MI_BGCF_200OK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_200OK_01 + + } // End of group ims200Ok + + group imsAck { + + /** + * @desc Verify that the IMS_E_CSCF_A successfully processes a ACK provisional response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the PSAP entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the PSAP entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_PSAP_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_E_CSCF_A entity sends an ACK containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_PSAP_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE + * ; + * from the PSAP entity + * } + * } + */ + function f_mtc_check_TP_MI_BGCF_ECO_ACK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MI_BGCF_ACK_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MI_BGCF_ACK_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_ACK_01 + + } // End of group imsAck + + group imsBye { + + /** + * @desc Verify that the E-CSCF successfully processes a BYE (Terminating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B and + * the UE_A entity previouslyEstablishedCallWith the UE_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity receives a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the IMS_P_CSCF_A entity + * } + * then { + * the IMS_E_CSCF_A entity sends a BYE containing + * From indicating value PX_UE_B_SIP_URI, + * To indicating value PX_UE_A_SIP_URI, + * CallId indicating value PX_UE_B_CALLID, + * Via indicating value PX_UE_B_VIA, + * Route indicating value PX_UE_B_SERVICE_ROUTE + * ; + * from the PSAP entity + * } + * } + */ + function f_mtc_check_TP_MI_BGCF_ECO_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MI_BGCF_BYE_01( + p_sip.request.msgHeader.callId, + -, // New CSeq, + -, // FIXME To be set + { + fieldName := FROM_E, + addressField := p_sip.request.msgHeader.toField.addressField, + fromParams := * + }, //p_sip.request.msgHeader.fromField, + { + fieldName := TO_E, + addressField := p_sip.request.msgHeader.fromField.addressField, + toParams := * + } //p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_BYE_Request_Base) }, + { 0, omit }, + "TP_MI_BGCF_BYE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_BYE_01 + + } // End of group imsBye + + group ims200OkBye { + + /** + * @desc Verify that the E-CSCF successfully processes a 200 (OK) BYE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_E_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * to the PSAP entity + * } + * then { + * the IMS_E_CSCF_A entity sends a 200_Ok containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * not PChargingVector, + * not PChargingFunctionAddresses, + * not PPreferredIdentity + * to the IMS_P_CSCF_A entity + * } + * } + */ + function f_mtc_check_TP_MI_BGCF_ECO_200OK_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MI_BGCF_200OK_BYE_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_200OK_BYE_01 + + } // End of group ims200OkBye + + group imsCancel { + + function f_mtc_check_TP_MI_BGCF_ECO_CANCEL_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MI_BGCF_CANCEL_01( + p_sip.request.msgHeader.callId, + -, // New CSeq, + -, // FIXME To be set + { + fieldName := FROM_E, + addressField := p_sip.request.msgHeader.toField.addressField, + fromParams := * + }, //p_sip.request.msgHeader.fromField, + { + fieldName := TO_E, + addressField := p_sip.request.msgHeader.fromField.addressField, + toParams := * + } //p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MI_BGCF_CANCEL_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_CANCEL_01 + + } // End of group imsCancel + + group imsRequestTermination { + + function f_mtc_check_TP_MI_BGCF_ECO_487INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + -, // New CSeq + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField, + omit + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MI_BGCF_487INVITE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_487INVITE_01 + + } // End of group imsRequestTermination + +} // End of module AtsImsIot_TP_behavior_MI \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn index 08ca556..911d621 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_ML.ttcn @@ -25,6 +25,7 @@ module AtsImsIot_TP_behavior_ML { // AtsImsIot import from AtsImsIot_TestSystem all; import from AtsImsIot_Templates_MW all; + import from AtsImsIot_Templates_ML all; import from AtsImsIot_Templates all; import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; @@ -84,8 +85,8 @@ module AtsImsIot_TP_behavior_ML { { mw_SipRequest(mw_TP_ML_ECSCF_INVITE_01( -, // FIXME Set expected value ( - mw_From_NameAddr_SipUrl({quotedString:=v_userInfoB.publicId}, v_userInfoB.publicId, v_userInfoB.domain), - mw_From_AddrUnion_TelUrl(v_userInfoB.publicId) + mw_From_NameAddr_SipUrl({quotedString:=v_psapInfo.publicId}, v_psapInfo.publicId, v_psapInfo.domain), + mw_From_AddrUnion_TelUrl(v_psapInfo.publicId) ), ( mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), @@ -107,6 +108,44 @@ module AtsImsIot_TP_behavior_ML { } } // End of function f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01 + function f_mtc_check_TP_ML_ECSCF_ECO_INVITE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_ML_ECSCF_INVITE_01( + -, // FIXME Set expected value + ( + mw_From_NameAddr_SipUrl({quotedString:=v_psapInfo.publicId}, v_psapInfo.publicId, v_psapInfo.domain), + mw_From_AddrUnion_TelUrl(v_psapInfo.publicId) + ), + ( + mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), + mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId + ) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_ML_ECSCF_ECO_INVITE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_ML_ECSCF_ECO_INVITE_02 + } // End of group imsInvite group ims3xxx { @@ -139,4 +178,4 @@ module AtsImsIot_TP_behavior_ML { } // End of group ims183SessionProgress -} // End of module AtsImsIot_TP_behavior_ML \ No newline at end of file +} // End of module AtsImsIot_TP_behavior_ML diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn index ded58e6..8b7b62e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MM.ttcn @@ -24,7 +24,7 @@ module AtsImsIot_TP_behavior_MM { import from LibMsrp_Templates all; // AtsImsIot import from AtsImsIot_TestSystem all; - import from AtsImsIot_Templates_MW all; + import from AtsImsIot_Templates_MM all; import from AtsImsIot_Templates all; import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; @@ -79,7 +79,7 @@ module AtsImsIot_TP_behavior_MM { // Check the INVITE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MM_PSAP_INVITE_01( + { mw_SipRequest(mw_TP_MM_ECSCF_INVITE_01( -, // FIXME Set expected value mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId @@ -87,7 +87,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipRequest(mw_INVITE_Request_Base) }, {0, omit}, - "TP_MM_PSAP_INVITE_01 - Request", + "TP_MM_ECSCF_INVITE_01 - Request", true, p_checkMessage ) @@ -99,6 +99,38 @@ module AtsImsIot_TP_behavior_MM { } } // End of function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01 + function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MM_ECSCF_INVITE_01( + -, // FIXME Set expected value + mw_From_AddrUnion_TelUrl(-), // v_userInfoA.publicId + mw_To_AddrUnion_TelUrl(-) // v_psapInfo.publicId + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MM_ECSCF_INVITE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_INVITE_02 + } // End of group imsInvite group ims100Trying { @@ -125,15 +157,15 @@ module AtsImsIot_TP_behavior_MM { * } */ function f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 100 TRYING p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MM_PSAP_100Trying_01( + { mw_SipResponse(mw_TP_MM_ECSCF_100Trying_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField @@ -141,7 +173,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipResponse(mw_100Trying_Base) }, { 0, omit }, - "TP_MM_PSAP_100Trying_01", + "TP_MM_ECSCF_100Trying_01", false, p_checkMessage ) @@ -188,15 +220,15 @@ module AtsImsIot_TP_behavior_MM { * } */ function f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 180 RINGING p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MM_PSAP_180Ringing_01( + { mw_SipResponse(mw_TP_MM_ECSCF_180Ringing_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, mw_To_NameAddr_TelUrl( @@ -206,7 +238,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipResponse(mw_180Ringing_Base) }, { 0, omit }, - "TP_MM_PSAP_180RINGING_01", + "TP_MM_ECSCF_180RINGING_01", false, p_checkMessage ) @@ -253,15 +285,15 @@ module AtsImsIot_TP_behavior_MM { * } */ function f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { // Check the 183 SESSION_PROGRESS p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipResponse(mw_TP_MM_PSAP_183SessionProgress_01( + { mw_SipResponse(mw_TP_MM_ECSCF_183SessionProgress_01( p_sip.request.msgHeader.cSeq, p_sip.request.msgHeader.fromField, p_sip.request.msgHeader.toField @@ -269,7 +301,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipResponse(mw_183SessionProgress_Base) }, { 0, omit }, - "TP_MM_PSAP_183SESSION_PROGRESS_01", + "TP_MM_ECSCF_183SESSION_PROGRESS_01", false, p_checkMessage ) @@ -322,10 +354,10 @@ module AtsImsIot_TP_behavior_MM { * } */ function f_mtc_check_TP_MM_ECSCF_ECO_200OK_01( - in SipInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in SipMessage p_sip - ) runs on ImsTestCoordinator { + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); @@ -345,7 +377,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipResponse(mw_200OK_Base) }, { 0, omit }, - "TP_MM_PSAP_200OK_01", + "TP_MM_ECSCF_200OK_01", false, p_checkMessage ) @@ -401,7 +433,7 @@ module AtsImsIot_TP_behavior_MM { // Check the ACK p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MM_PSAP_ACK_01( + { mw_SipRequest(mw_TP_MM_ECSCF_ACK_01( p_sip.request.msgHeader.callId, p_sip.request.msgHeader.cSeq, -, // FIXME To be set @@ -411,7 +443,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipRequest(mw_ACK_Request_Base) }, { 0, omit }, - "TP_MM_PSAP_ACK_01 - Request", + "TP_MM_ECSCF_ACK_01 - Request", false, p_checkMessage ) @@ -467,7 +499,7 @@ module AtsImsIot_TP_behavior_MM { // Check the BYE p_monitorCompRef.start( f_Iot_Sip_receive( - { mw_SipRequest(mw_TP_MM_PSAP_BYE_01( + { mw_SipRequest(mw_TP_MM_ECSCF_BYE_01( p_sip.request.msgHeader.callId, -, // New CSeq, -, // FIXME To be set @@ -485,7 +517,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipRequest(mw_BYE_Request_Base) }, { 0, omit }, - "TP_MM_PSAP_BYE_01 - Request", + "TP_MM_ECSCF_BYE_01 - Request", true, p_checkMessage ) @@ -555,7 +587,7 @@ module AtsImsIot_TP_behavior_MM { }, { mw_SipResponse(mw_200OK_Base) }, { 0, omit }, - "TP_MM_PSAP_200OK_BYE_01", + "TP_MM_ECSCF_200OK_BYE_01", false, p_checkMessage ) @@ -566,4 +598,116 @@ module AtsImsIot_TP_behavior_MM { } // End of group ims200OkBye + group imsCancel { + + function f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MM_ECSCF_CANCEL_01( + p_sip.request.msgHeader.callId, + -, // New CSeq, + -, // FIXME To be set + { + fieldName := FROM_E, + addressField := p_sip.request.msgHeader.toField.addressField, + fromParams := * + }, //p_sip.request.msgHeader.fromField, + { + fieldName := TO_E, + addressField := p_sip.request.msgHeader.fromField.addressField, + toParams := * + } //p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MM_ECSCF_CANCEL_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01 + + } // End of group imsCancel + + group imsRequestTermination { + + function f_mtc_check_TP_MM_ECSCF_ECO_487INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + -, // New CSeq + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField, + omit + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MM_ECSCF_487INVITE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_487INVITE_01 + + } // End of group imsRequestTermination + + group imsTemporaryUnavailable { + + function f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_480TemporaryUnavailable(-, p_sip.request.msgHeader.cSeq)) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MM_ECSCF_480TEMPAV_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_01 + + } // End of group imsTemporaryUnavailable + } // End of module AtsImsIot_TP_behavior_MM \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EB.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EB.ttcn index 715f085..eaf605c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EB.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EB.ttcn @@ -102,6 +102,34 @@ module AtsImsIot_TP_behavior_MW_EB { } } // End of function f_mtc_check_TP_MW_IBCF_INVITE_01 + function f_mtc_check_TP_MW_IBCF_INVITE_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A); + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mdw_TP_MW_IBCF_INVITE_01( + ( + mw_SipUrl_Host(v_EUT_A_Addr) //f_GetEUTScscfIpAddress(PX_EUT_A) + ) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_IBCF_INVITE_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_IBCF_INVITE_02 + } // End of group imsInvite group ims100Trying { @@ -330,8 +358,6 @@ module AtsImsIot_TP_behavior_MW_EB { in SipMessage p_sip ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)) { - var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B); - // Check the 200 OK p_monitorCompRef.start( f_Iot_Sip_receive( @@ -358,6 +384,38 @@ module AtsImsIot_TP_behavior_MW_EB { } } // End of function f_mtc_check_TP_MW_IBCF_200OK_01 + function f_mtc_check_TP_MW_IBCF_ECO_200OK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 200 OK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_200OK( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.fromField, + ( + mw_To_NameAddr_TelUrl({quotedString:=f_getSipUserId(PX_PSAP).publicId}), + mw_To_AddrUnion_TelUrl(f_getTelUserId(PX_PSAP).publicId), + p_sip.request.msgHeader.toField + ) + )) + }, + { mw_SipResponse(mw_200OK_Base) }, + { 0, omit }, + "TP_MW_IBCF_200OK_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + + } + } // End of function f_mtc_check_TP_MW_IBCF_ECO_200OK_01 + /** * @desc Verify that the E-CSCF successfully processes a 200 (Ok) provisional response on initial INVITE (Terminating Leg). * Initial conditions with { @@ -489,6 +547,34 @@ module AtsImsIot_TP_behavior_MW_EB { } } // End of function f_mtc_check_TP_MW_IBCF_ACK_01 + function f_mtc_check_TP_MW_IBCF_ECO_ACK_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the ACK + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_IBCF_ACK_01( + p_sip.request.msgHeader.callId, + p_sip.request.msgHeader.cSeq, + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_ACK_Request_Base) }, + { 0, omit }, + "TP_MW_IBCF_ACK_01 - Request", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_IBCF_ACK_01 + } // End of group imsAck group imsBye { @@ -565,6 +651,44 @@ module AtsImsIot_TP_behavior_MW_EB { } } // End of function f_mtc_check_TP_MW_IBCF_BYE_01 + function f_mtc_check_TP_MW_IBCF_ECO_BYE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the BYE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_IBCF_BYE_01( + p_sip.request.msgHeader.callId, + -, // New CSeq, + -, // FIXME To be set + { + fieldName := FROM_E, + addressField := p_sip.request.msgHeader.toField.addressField, + fromParams := * + }, //p_sip.request.msgHeader.fromField, + { + fieldName := TO_E, + addressField := p_sip.request.msgHeader.fromField.addressField, + toParams := * + } //p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_BYE_Request_Base) }, + { 0, omit }, + "TP_MW_IBCF_BYE_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_IBCF_ECO_BYE_01 + } // End of group imsBye group ims200OkBye { @@ -635,4 +759,83 @@ module AtsImsIot_TP_behavior_MW_EB { } // End of group ims200OkBye + group imsCancel { + + function f_mtc_check_TP_MW_IBCF_ECO_CANCEL_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_IBCF_CANCEL_01( + p_sip.request.msgHeader.callId, + -, // New CSeq, + -, // FIXME To be set + { + fieldName := FROM_E, + addressField := p_sip.request.msgHeader.toField.addressField, + fromParams := * + }, //p_sip.request.msgHeader.fromField, + { + fieldName := TO_E, + addressField := p_sip.request.msgHeader.fromField.addressField, + toParams := * + } //p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MW_IBCF_CANCEL_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_IBCF_ECO_CANCEL_01 + + } // End of group imsCancel + + group ims487Invite { + + function f_mtc_check_TP_MW_IBCF_ECO_487INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var charstring v_EUT_A_Addr := f_GetEUTScscfAddress_1();//f_GetEUTScscfAddress(PX_EUT_A); + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + -, // New CSeq + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField, + omit + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_IBCF_487INVITE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_IBCF_ECO_487INVITE_01 + + } // End of group ims487Invite + } // End of module AtsImsIot_TP_behavior_MW_EB \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn index 98c80ff..559f61d 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_EC.ttcn @@ -150,8 +150,8 @@ module AtsImsIot_TP_behavior_MW_EC { { mw_SipRequest(mw_TP_MW_ECSCF_INVITE_02( -, // FIXME Set expected value ( - mw_From_NameAddr_SipUrl({quotedString:=v_userInfoB.publicId}, v_userInfoB.publicId, v_userInfoB.domain), - mw_From_AddrUnion_TelUrl(v_userInfoB.publicId) + mw_From_NameAddr_SipUrl({quotedString:=v_psapInfo.publicId}, v_psapInfo.publicId, v_psapInfo.domain), + mw_From_AddrUnion_TelUrl(v_psapInfo.publicId) ), ( mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), @@ -173,6 +173,44 @@ module AtsImsIot_TP_behavior_MW_EC { } } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02 + function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + out SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY); + var ImsUserInfo v_psapInfo := f_getSipUserId(PX_PSAP); + + // Check the INVITE + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_ECSCF_INVITE_02( + -, // FIXME Set expected value + ( + mw_From_NameAddr_SipUrl({quotedString:=v_psapInfo.publicId}, v_psapInfo.publicId, v_psapInfo.domain), + mw_From_AddrUnion_TelUrl(v_psapInfo.publicId) + ), + ( + mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/), + mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId + ) + )) + }, + { mw_SipRequest(mw_INVITE_Request_Base) }, + {0, omit}, + "TP_MW_PCSCF_INVITE_02 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + log("##### p_sip: ", p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_INVITE_03 + } // End of group imsInvite group ims100Trying { @@ -634,4 +672,69 @@ module AtsImsIot_TP_behavior_MW_EC { } // End of group ims200OkBye + group imsCancel { + + function f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the CANCEL + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipRequest(mw_TP_MW_ECSCF_CANCEL_01( + p_sip.request.msgHeader.callId, + -, // New CSeq + -, // FIXME To be set + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField + )) + }, + { mw_SipRequest(mw_CANCEL_Request_Base) }, + { 0, omit }, + "TP_MW_ECSCF_CANCEL_01 - Request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01 + + } // End of group imsCancel + + group imsTemporaryUnavailable { + + function f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_480TemporaryUnavailable(-, p_sip.request.msgHeader.cSeq)) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_ECO_480TEMPAV_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01 + + } // End of group imsTemporaryUnavailable + } // End of module AtsImsIot_TP_behavior_MW_EC \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn index 14428e2..e72bdfa 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_IS.ttcn @@ -400,6 +400,66 @@ module AtsImsIot_TP_behavior_MW_IS { } } // End of function f_mtc_check_TP_MW_ICSCF_REGISTER_02 + function f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var SipMessage v_sip; + + // Check the first REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_ICSCF_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_02 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check REGISTER 200 OK response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_Response_200onREGISTER_IMS( + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.cSeq, + ?, // UE URI + mw_contact(mw_ContactAddress), + ? //FIXME ? + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_MW_ICSCF_REGISTER_02 - 200 OK", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_ICSCF_ECO_REGISTER_02 + /** * @desc Verify that the I-CSCF successfully processes a invalid first registration (Unsuccessful). * Initial conditions with { @@ -778,7 +838,10 @@ module AtsImsIot_TP_behavior_MW_IS { { mw_SipResponse(mw_Response_200onREGISTER_IMS( v_sip.request.msgHeader.callId, - v_sip.request.msgHeader.cSeq + v_sip.request.msgHeader.cSeq, + ?, // UE URI + mw_contact(mw_ContactAddress), + ? //FIXME ? )) }, { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn index f46dad4..ab66af6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_PS.ttcn @@ -453,6 +453,65 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_REGISTER_02 + function f_mtc_check_TP_MW_PCSCF_ECO_REGISTER_02( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A); + var SipMessage v_sip; + + // Check the second REGISTER + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipRequest( + mw_TP_MW_PCSCF_REGISTER_02( + mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain), + mw_Authorization_other + ) + ) + }, + { + mw_SipRequest(mw_REGISTER_Request_Base) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_02 - Second request", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); + if (not(isbound(v_sip))) { + return; + } + // Check the second REGISTER response + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_200OK( + v_sip.request.msgHeader.cSeq, + v_sip.request.msgHeader.callId, + v_sip.request.msgHeader.fromField, + v_sip.request.msgHeader.toField + )) + }, + { + mw_SipResponse(mw_Response_2xx_Base) + }, + {0, omit}, + "TP_MW_PCSCF_REGISTER_02 - 200 OK", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_REGISTER_02 + /** * @desc Verify that the P-CSCF successfully processes a invalid first registration (Unsuccessful). * Initial conditions with { @@ -3185,11 +3244,7 @@ module AtsImsIot_TP_behavior_MW_PS { p_monitorCompRef.start( f_Iot_Sip_receive( { mw_SipRequest(mw_TP_MW_PCSCF_CANCEL_01( - p_sip.request.msgHeader.callId, - p_sip.request.msgHeader.cSeq, - -, // FIXME To be set - p_sip.request.msgHeader.fromField, - p_sip.request.msgHeader.toField + p_sip.request.msgHeader.callId )) }, { mw_SipRequest(mw_CANCEL_Request_Base) }, @@ -3809,6 +3864,41 @@ module AtsImsIot_TP_behavior_MW_PS { } } // End of function f_mtc_check_TP_MW_PCSCF_487INVITE_01 + function f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse( + mw_487RequestTerminated( // TODO Enforce template + p_sip.request.msgHeader.callId, + -, // New CSeq + p_sip.request.msgHeader.fromField, + p_sip.request.msgHeader.toField, + omit + ) + ) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MW_PCSCF_487INVITE_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MW_PCSCF_ECO_487INVITE_01 + /** * @desc Verify that the P-CSCF successfully processes a 487 INVITE (Request Terminated) to reject call (Terminating Leg). * Initial conditions with { diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn index 9ccf70c..0136fc3 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MW_SI.ttcn @@ -1249,7 +1249,7 @@ module AtsImsIot_TP_behavior_MW_SI { }} // End of function f_mtc_check_TP_MW_SCSCF_200OK_02 } // End of group ims200Ok - + group imsAck { /** diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_Mx_LRF.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_Mx_LRF.ttcn new file mode 100644 index 0000000..f38a038 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_Mx_LRF.ttcn @@ -0,0 +1,98 @@ +/** + * @author STF 574 + * @version $Id$ + * @desc This module provides the TP behaviour functions at Mw interface at S-CSCF/IBCF + */ + +module AtsImsIot_TP_behavior_Mx_LRF { + + // LibIms + import from LibIms_Templates all; + import from LibIms_UpperTester all; + // LibIot + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; + import from LibIot_TestInterface all; + import from LibIot_PIXITS all; + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + import from LibSip_SDPTypes all; + // LibMsrp + import from LibMsrp_TypesAndValues all; + import from LibMsrp_Functions all; + import from LibMsrp_Templates all; + // AtsImsIot + import from AtsImsIot_TestSystem all; + import from AtsImsIot_Templates all; + import from AtsImsIot_Templates_MW all; + import from AtsImsIot_Templates_ML all; + import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_Functions all; + + group ims3xxAny { + + /** + * @desc Verify that the LRF successfully processes a 3xx Any response on initial INVITE (Originating Leg). + * Initial conditions with { + * the UE_A entity isAttachedTo the EPC_A and + * the UE_B entity isAttachedTo the EPC_B and + * the UE_A entity isRegisteredTo the IMS_A and + * the UE_B entity isRegisteredTo the IMS_B + * } + * + * Expected behaviour + * ensure that { + * when { + * the IMS_LRF_A entity receives an INVITE containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * Contact indicating value V_CONTACT + * ; + * from the IMS_EBCF_A entity + * } + * then { + * the IMS_LRF_A entity sends a 3xx Any containing + * From indicating value PX_UE_A_SIP_URI, + * To indicating value PX_UE_B_SIP_URI, + * CallId indicating value PX_UE_A_CALLID, + * Via indicating value PX_UE_A_VIA, + * Route indicating value PX_UE_A_SERVICE_ROUTE, + * Contact indicating value V_CONTACT + * ; + * to the IMS_EBCF_A entity + * } + * } + */ + function f_mtc_check_TP_MX_LRF_3xxAny_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 3xx Any + p_monitorCompRef.start( + f_Iot_Sip_receive( + { mw_SipResponse(mw_3xxContact( + p_sip.request.msgHeader.cSeq, + p_sip.request.msgHeader.accept + )) + }, + { mw_SipResponse(mdw_3XX_Base) }, + { 0, omit }, + "TP_Mx_LRF_3xxAny_01", + false, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_MX_LRF_3xxAny_01 + + } // End of group ims3xxAny + +} // End of module AtsImsIot_TP_behavior_Mx_LRF diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn index 606a44d..5c86273 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_RX.ttcn @@ -8,23 +8,23 @@ module AtsImsIot_TP_behavior_RX { // LibIot - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT, PX_EUT_A, PX_EUT_B;} - import from LibIot_VxLTE_PIXITS {modulepar PX_SIP_GMA_UE_IPADDR;} - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from LibIot_PIXITS all; + import from LibIot_VxLTE_PIXITS all; + import from LibIot_TestInterface all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; // AtsImsIot - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; import from AtsImsIot_Functions all; import from AtsImsIot_Diameter_Templates all; - import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } + import from AtsImsIot_TestSystem all; // LibDiameter import from LibDiameter_Templates all; - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; - import from LibDiameter_Steps {function f_IPV4_Address2oct;}; + import from LibDiameter_TypesAndValues all; + import from LibDiameter_Steps all; group g_PCRF { @@ -70,13 +70,15 @@ group g_PCRF_ASA { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aSR_MSG := mw_ASR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_ASA_01 - ASR", @@ -86,13 +88,15 @@ group g_PCRF_ASA { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { aSA_MSG := mw_ASA_resultCode }; + mw_diameter_msg_fail := { aSA_MSG := mw_ASA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aSA_MSG := mw_ASA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aSA_MSG := mw_ASA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_ASA_01 - ASA", @@ -152,13 +156,15 @@ group g_PCRF_AAA { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_AAA_01 - AAR", @@ -168,13 +174,15 @@ group g_PCRF_AAA { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { aAA_MSG := mw_AAA_resultCode/*mw_AAA_AcceptableService*/ }; + mw_diameter_msg_fail := { aAA_MSG := mw_AAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode/*mw_AAA_AcceptableService*/ } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_AAA_01 - AAA", @@ -213,13 +221,15 @@ group g_PCRF_AAA { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAA_MSG := mw_AAA_resultCode }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAA_MSG := mw_AAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_AAA_02 - AAA", @@ -265,13 +275,15 @@ group g_PCRF_AAA { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAA_MSG := mw_AAA_resultCode }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAA_MSG := mw_AAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_AAA_03 - AAA", @@ -324,13 +336,15 @@ group g_PCRF_STA { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTA_MSG := mw_STA_diamSuccess }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTA_MSG := mw_STA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTA_MSG := mw_STA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_STA_01 - STA", @@ -378,13 +392,15 @@ group g_PCRF_STA { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_STA_02 - STR", @@ -394,13 +410,15 @@ group g_PCRF_STA { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { sTA_MSG := mw_STA_diamSuccess }; + mw_diameter_msg_fail := { sTA_MSG := mw_STA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTA_MSG := mw_STA_diamSuccess } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTA_MSG := mw_STA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCRF_STA_02 - STA", @@ -462,13 +480,15 @@ group g_PCSCF_ASR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aSR_MSG := mw_ASR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_abortCause(BEARER_RELEASED_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_ASR_01 - ASR", @@ -541,13 +561,15 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_MediaComponent_specificActionLossOfBearer }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_MediaComponent_specificActionLossOfBearer } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_01 - AAR", @@ -596,13 +618,14 @@ group g_PCSCF_AAR { ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ var boolean v_noDiameterMessageExpected := true; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { //check if nothing received }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } //Fail criteria: check if AAR is sent + mw_diameter_msg_fail //Fail criteria: check if AAR is sent }, {0, omit}, "TP_RX_PCSCF_AAR_02 - AAR", @@ -668,17 +691,18 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + mw_rxRequestType(INITIAL_REQUEST_E), + mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E), + mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( - mw_rxRequestType(INITIAL_REQUEST_E), - mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E), - mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) - } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_03 - AAR", @@ -745,17 +769,18 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + mw_rxRequestType(UPDATE_REQUEST_E), + mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E), + mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( - mw_rxRequestType(UPDATE_REQUEST_E), - mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E), - mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) - } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_04 - AAR", @@ -823,17 +848,18 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + mw_rxRequestType(UPDATE_REQUEST_E), + mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E), + mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( - mw_rxRequestType(UPDATE_REQUEST_E), - mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E), - mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) - } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_05 - AAR", @@ -899,17 +925,18 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + mw_rxRequestType(INITIAL_REQUEST_E), + mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E), + mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( - mw_rxRequestType(INITIAL_REQUEST_E), - mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E), - mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) - } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_06 - AAR", @@ -977,17 +1004,18 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + mw_rxRequestType(UPDATE_REQUEST_E), + mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E), + mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( - mw_rxRequestType(UPDATE_REQUEST_E), - mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E), - mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) - } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_07 - AAR", @@ -1055,17 +1083,18 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + mw_rxRequestType(UPDATE_REQUEST_E), + mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E), + mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( - mw_rxRequestType(UPDATE_REQUEST_E), - mw_serviceInfoStatus(PRELIMINARY_SERVICE_INFORMATION_E), - mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) - } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_08 - AAR", @@ -1133,17 +1162,18 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + mw_rxRequestType(UPDATE_REQUEST_E), + mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E), + mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( - mw_rxRequestType(UPDATE_REQUEST_E), - mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E), - mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) - } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_09 - AAR", @@ -1210,17 +1240,18 @@ group g_PCSCF_AAR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( + mw_rxRequestType(UPDATE_REQUEST_E), + mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E), + mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_RequestType_ServiceInfoStatus_FramedIPv4( - mw_rxRequestType(UPDATE_REQUEST_E), - mw_serviceInfoStatus(FINAL_SERVICE_INFORMATION_E), - mw_framedIPAddress(f_IPV4_Address2oct(PX_SIP_GMA_UE_IPADDR))) - } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_AAR_10 - AAR", @@ -1293,13 +1324,15 @@ group g_PCSCF_RAA { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { rAR_MSG := mw_RAR_SpecificAction }; + var template DIAMETER_MSG mw_diameter_msg_fail := { rAR_MSG := mw_RAR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_SpecificAction } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAR_MSG := mw_RAR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_RAA_01 - RAR", @@ -1309,13 +1342,15 @@ group g_PCSCF_RAA { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { rAA_MSG := mw_RAA_Rx_resultCode }; + mw_diameter_msg_fail := { rAA_MSG := mw_RAA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_Rx_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ rAA_MSG := mw_RAA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_RAA_01 - RAA", @@ -1368,13 +1403,15 @@ group g_PCSCF_STR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_STR_01 - STR", @@ -1424,13 +1461,15 @@ group g_PCSCF_STR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_STR_02 - STR", @@ -1479,13 +1518,15 @@ group g_PCSCF_STR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_STR_03 - STR", @@ -1534,13 +1575,15 @@ group g_PCSCF_STR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_STR_04 - STR", @@ -1589,13 +1632,15 @@ group g_PCSCF_STR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_STR_05 - STR", @@ -1644,13 +1689,15 @@ group g_PCSCF_STR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_STR_06 - STR", @@ -1699,13 +1746,15 @@ group g_PCSCF_STR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_STR_07 - STR", @@ -1754,13 +1803,15 @@ group g_PCSCF_STR { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_RX_PCSCF_STR_08 - STR", @@ -1777,4 +1828,4 @@ group g_PCSCF_STR { } // end group g_PCSCF -} // end module AtsImsIot_TP_behavior_RX \ No newline at end of file +} // end module AtsImsIot_TP_behavior_RX diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn index f8a1a1a..b9a7056 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S6A.ttcn @@ -7,21 +7,21 @@ module AtsImsIot_TP_behavior_S6A { - import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from AtsImsIot_TestSystem all; + import from LibIot_PIXITS all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from LibIot_TestInterface all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from LibIot_PIXITS all; import from AtsImsIot_Diameter_Templates all; // LibDiameter import from LibDiameter_Templates all; - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; + import from LibDiameter_TypesAndValues all; @@ -65,13 +65,15 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aIR_MSG := mw_AIR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aIR_MSG := mw_AIR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aIR_MSG := mw_AIR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aIR_MSG := mw_AIR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_AIA_01 - AIR", @@ -81,13 +83,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { aIA_MSG := mw_AIA_resultCode }; + mw_diameter_msg_fail := { aIA_MSG := mw_AIA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aIA_MSG := mw_AIA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aIA_MSG := mw_AIA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_AIA_01 - AIA", @@ -140,13 +144,15 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cLR_MSG := mw_CLR_cancelation }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cLR_MSG := mw_CLR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cLR_MSG := mw_CLR_cancelation } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cLR_MSG := mw_CLR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_CLR_01 - CLR", @@ -195,13 +201,15 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { pUER_MSG := mw_PUER_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { pUER_MSG := mw_PUER_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ pUER_MSG := mw_PUER_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ pUER_MSG := mw_PUER_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_PUA_01 - PUR", @@ -211,13 +219,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { pUEA_MSG := mw_PUEA_resultCode }; + mw_diameter_msg_fail := { pUEA_MSG := mw_PUEA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ pUEA_MSG := mw_PUEA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ pUEA_MSG := mw_PUEA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_PUA_01 - PUA", @@ -267,13 +277,15 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { uLR_MSG := mw_ULR_userName }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uLR_MSG := mw_ULR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_ULA_01 - ULR", @@ -283,13 +295,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { uLA_MSG := mw_ULA_resultCode_flags }; + mw_diameter_msg_fail := { uLA_MSG := mw_ULA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ uLA_MSG := mw_ULA_resultCode_flags } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_ULA_01 - ULA", @@ -339,13 +353,15 @@ group g_HSS { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { uLR_MSG := mw_ULR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uLR_MSG := mw_ULR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_ULA_02 - ULR", @@ -355,13 +371,15 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { uLA_MSG := mw_ULA_resultCode_flags }; + mw_diameter_msg_fail := { uLA_MSG := mw_ULA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ uLA_MSG := mw_ULA_resultCode_flags } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_HSS_ULA_02 - ULA", @@ -373,12 +391,12 @@ group g_HSS { } } // End of function f_mtc_check_TP_S6A_HSS_ULA_02 - group ES{ - /** - * Starts monitor component behavior for TP_S6A_HSS_ECO_ULA_01 - * @param p_monitorCompRef Reference to monitor component - *
-		 *Test objective  "Verify that IUT after receipt of UL-Request sends UL-Answer containing Emergency-Info AVP."
+    group ES{
+        /**
+         * Starts monitor component behavior for TP_S6A_HSS_ECO_ULA_01
+         * @param p_monitorCompRef Reference to monitor component
+         * 
+         *Test objective  "Verify that IUT after receipt of UL-Request sends UL-Answer containing Emergency-Info AVP."
          *
          *Reference 
          *   "TS 129 272 [10], clause 5.2.1.1.2"
@@ -408,49 +426,53 @@ group g_HSS {
          *           to the EPC_MME_A entity
          *       }
          *   } 
-		 * 
- */ - function f_mtc_check_TP_S6A_HSS_ECO_ULA_01( - DiameterInterfaceMonitor p_monitorCompRef, - in boolean p_checkMessage := false, - in boolean p_forward_to_mtc := false - ) runs on ImsTestCoordinator { - if (isvalue(p_monitorCompRef)){ -// p_monitorCompRef.start ( -// f_Iot_Diameter_receive( -// { -// DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } -// }, -// { -// DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic } -// }, -// {0, omit}, -// "TP_S6A_HSS_ULA_01 - ULR", -// p_forward_to_mtc, -// p_checkMessage -// ) -// ); -// p_monitorCompRef.done; + *
+ */ + function f_mtc_check_TP_S6A_HSS_ECO_ULA_01( + DiameterInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + in boolean p_forward_to_mtc := false + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)){ +// var template DIAMETER_MSG mw_diameter_msg_pass := { uLR_MSG := mw_ULR_userName }; +// var template DIAMETER_MSG mw_diameter_msg_fail := { uLR_MSG := mw_ULR_basic }; +// p_monitorCompRef.start ( +// f_Iot_Diameter_receive( +// { +// mw_diameter_msg_pass +// }, +// { +// mw_diameter_msg_fail +// }, +// {0, omit}, +// "TP_S6A_HSS_ULA_01 - ULR", +// p_forward_to_mtc, +// p_checkMessage +// ) +// ); +// p_monitorCompRef.done; - p_monitorCompRef.start ( - f_Iot_Diameter_receive( - { - DIAMETER_MSG:{ uLA_MSG := mw_ULA_subsdata_flags } - }, - { - DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic } - }, - {0, omit}, - "TP_S6A_HSS_ECO_ULA_01 - ULA", - p_forward_to_mtc, - p_checkMessage - ) - ); - p_monitorCompRef.done; - } - } // End of function f_mtc_check_TP_S6A_HSS_ECO_ULA_01 - - }// end group ES + var template DIAMETER_MSG mw_diameter_msg_pass := { uLA_MSG := mw_ULA_subsdata_flags }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uLA_MSG := mw_ULA_basic }; + p_monitorCompRef.start ( + f_Iot_Diameter_receive( + { + mw_diameter_msg_pass + }, + { + mw_diameter_msg_fail + }, + {0, omit}, + "TP_S6A_HSS_ECO_ULA_01 - ULA", + p_forward_to_mtc, + p_checkMessage + ) + ); + p_monitorCompRef.done; + } + } // End of function f_mtc_check_TP_S6A_HSS_ECO_ULA_01 + + }// end group ES } // end group g_HSS group g_MME { @@ -494,13 +516,15 @@ group g_MME { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ - p_monitorCompRef.start ( + var template DIAMETER_MSG mw_diameter_msg_pass := { aIR_MSG := mw_AIR }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aIR_MSG := mw_AIR_basic }; + p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aIR_MSG := mw_AIR } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aIR_MSG := mw_AIR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_MME_AIR_01 - AIR", @@ -549,13 +573,15 @@ group g_MME { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cLR_MSG := mw_CLR_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cLR_MSG := mw_CLR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cLR_MSG := mw_CLR_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cLR_MSG := mw_CLR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_MME_CLA_01 - CLR", @@ -565,13 +591,15 @@ group g_MME { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { cLA_MSG := mw_CLA_resultCode }; + mw_diameter_msg_fail := { cLA_MSG := mw_CLA_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cLA_MSG := mw_CLA_resultCode } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cLA_MSG := mw_CLA_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_MME_CLA_01 - CLA", @@ -620,13 +648,15 @@ group g_MME { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { pUER_MSG := mw_PUER_userName }; + var template DIAMETER_MSG mw_diameter_msg_fail := { pUER_MSG := mw_PUER_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ pUER_MSG := mw_PUER_userName } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ pUER_MSG := mw_PUER_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_MME_PUR_01 - PUR", @@ -678,13 +708,15 @@ group g_MME { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { uLR_MSG := mw_ULR_userName }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uLR_MSG := mw_ULR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic} + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_MME_ULR_01 - ULR", @@ -736,13 +768,15 @@ group g_MME { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { uLR_MSG := mw_ULR_userName }; + var template DIAMETER_MSG mw_diameter_msg_fail := { uLR_MSG := mw_ULR_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S6A_MME_ULR_02 - ULR", @@ -755,9 +789,9 @@ group g_MME { } // End of function f_mtc_check_TP_S6A_MME_ULR_02 group ES{ - + }// end group ES } // end group g_MME -} // end module AtsImsIot_TP_behavior_S6A \ No newline at end of file +} // end module AtsImsIot_TP_behavior_S6A diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn index a0bdc8b..72aabfd 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_S9.ttcn @@ -7,21 +7,21 @@ module AtsImsIot_TP_behavior_S9 { - import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from AtsImsIot_TestSystem all; + import from LibIot_PIXITS all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from LibIot_TestInterface all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from LibIot_PIXITS all; import from AtsImsIot_Diameter_Templates all; // LibDiameter import from LibDiameter_Templates all; - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; + import from LibDiameter_TypesAndValues all; group g_PCRF { @@ -61,13 +61,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAR_MSG := mw_AAR_S9_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAR_MSG := mw_AAR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_S9_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAR_MSG := mw_AAR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_AAR_01 - AAR", @@ -134,13 +136,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAA_MSG := mw_AAA_S9_resultCode /*mw_AAA_S9_AcceptableService*/ }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAA_MSG := mw_AAA_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_S9_resultCode /*mw_AAA_S9_AcceptableService*/ } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_S9_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_AAA_01 - AAA", @@ -192,13 +196,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aAA_MSG := mw_AAA_S9_resultCode_mediaCopmonentDescription }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aAA_MSG := mw_AAA_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_S9_resultCode_mediaCopmonentDescription } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aAA_MSG := mw_AAA_S9_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_AAA_02 - AAA", @@ -247,14 +253,16 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aSR_MSG := mw_ASR_S9_abortCause(BEARER_RELEASED_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aSR_MSG := mw_ASR_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_S9_abortCause(BEARER_RELEASED_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aSR_MSG := mw_ASR_S9_basic } - }, + mw_diameter_msg_fail + }, {0, omit}, "TP_S9_PCRF_ASR_01 - ASR", p_forward_to_mtc, @@ -299,13 +307,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { aSA_MSG := mw_ASA_S9_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { aSA_MSG := mw_ASA_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ aSA_MSG := mw_ASA_S9_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ aSA_MSG := mw_ASA_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_ASA_01 - ASA", @@ -384,13 +394,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_S9_Establishment(INITIAL_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Establishment(INITIAL_REQUEST_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_CCR_01 - CCR", @@ -444,13 +456,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_S9_Termination(TERMINATION_REQUEST_E) }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_Termination(TERMINATION_REQUEST_E) } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCR_MSG := mw_CCR_S9_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_CCR_02 - CCR", @@ -515,13 +529,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCA_MSG := mw_CCA_S9_subsessionDecision_qosInfoAndDefaultEpsBearer }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCA_MSG := mw_CCA_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_S9_subsessionDecision_qosInfoAndDefaultEpsBearer } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_S9_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_CCA_01 - CCA", @@ -573,13 +589,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { cCA_MSG := mw_CCA_S9_subsessionDecisionAny }; + var template DIAMETER_MSG mw_diameter_msg_fail := { cCA_MSG := mw_CCA_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_S9_subsessionDecisionAny } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ cCA_MSG := mw_CCA_S9_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_CCA_02 - CCA", @@ -625,13 +643,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTR_MSG := mw_STR_S9_basic }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTR_MSG := mw_STR_dummy }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTR_MSG := mw_STR_S9_basic } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTR_MSG := mw_STR_dummy } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_STR_01 - STR", @@ -680,13 +700,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTA_MSG := mw_STA_S9_diamSuccess }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTA_MSG := mw_STA_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTA_MSG := mw_STA_S9_diamSuccess } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTA_MSG := mw_STA_S9_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_STA_01 - STA", @@ -735,13 +757,15 @@ group g_PCRF { in boolean p_forward_to_mtc := false ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ + var template DIAMETER_MSG mw_diameter_msg_pass := { sTA_MSG := mw_STA_S9_diamSuccess }; + var template DIAMETER_MSG mw_diameter_msg_fail := { sTA_MSG := mw_STA_S9_basic }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{ sTA_MSG := mw_STA_S9_diamSuccess } + mw_diameter_msg_pass }, { - DIAMETER_MSG:{ sTA_MSG := mw_STA_S9_basic } + mw_diameter_msg_fail }, {0, omit}, "TP_S9_PCRF_STA_02 - STA", diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn index 9272998..c7e19d2 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_SH.ttcn @@ -9,21 +9,21 @@ module AtsImsIot_TP_behavior_SH // LibIms import from LibIms_UpperTester all; - import from AtsImsIot_TestSystem { type DiameterInterfaceMonitor, ImsTestCoordinator; } - import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} - import from AtsImsIot_Templates {template all;} - import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } - import from LibIot_TestInterface { type EquipmentUser, IotEquipmentUser }; - import from LibIot_TypesAndValues {type SetFilterReq, SetFilterRsp;} - import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } + import from AtsImsIot_TestSystem all; + import from LibIot_PIXITS all; + import from AtsImsIot_Templates all; + import from AtsImsIot_TypesAndValues all; + import from LibIot_TestInterface all; + import from LibIot_TypesAndValues all; + import from LibIot_Functions all; import from AtsImsIot_Functions all; - import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} + import from LibIot_PIXITS all; import from AtsImsIot_Diameter_Templates all; // LibDiameter import from LibDiameter_Templates all; - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;}; + import from LibDiameter_TypesAndValues all; @@ -84,10 +84,11 @@ group g_HSS { ) runs on ImsTestCoordinator { if (isvalue(p_monitorCompRef)){ var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A); + var template DIAMETER_MSG mw_diameter_msg_pass := { uDR_MSG := mw_UDR_userData_publicIdentity("tel:"&v_userInfoA.publicId) }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uDR_MSG := mw_UDR_userData_publicIdentity("tel:"&v_userInfoA.publicId)} + mw_diameter_msg_pass }, {}, {0, omit}, @@ -98,10 +99,11 @@ group g_HSS { ); p_monitorCompRef.done; + mw_diameter_msg_pass := { uDA_MSG := mw_UDA_diamSuccess }; p_monitorCompRef.start ( f_Iot_Diameter_receive( { - DIAMETER_MSG:{uDA_MSG := mw_UDA_diamSuccess} + mw_diameter_msg_pass }, {}, {0, omit}, diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn index 7b149a1..32db8f6 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates.ttcn @@ -6,54 +6,16 @@ module AtsImsIot_Templates { - import from LibCommon_BasicTypesAndValues {type UInt16;} - import from LibCommon_VerdictControl {type FncRetCode;} - import from LibIot_TypesAndValues { - type - InterfaceInfoList, - ProtocolFilter, - GeneralConfigurationReq, - GeneralConfigurationRsp, - SetFilterReq, - SetFilterRsp, - StartTrafficCaptureReq, - StartTrafficCaptureRsp, - StopTrafficCaptureReq, - StopTrafficCaptureRsp, - IpAddress, - Status; - } - import from AtsImsIot_TypesAndValues { - type - SipMessage, NAPTRmessage - }; + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_VerdictControl all; + import from LibIot_TypesAndValues all; + import from AtsImsIot_TypesAndValues all; import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; - import from LibSip_Common { - type - GenericParam, - SemicolonParam_List - } - import from LibMsrp_TypesAndValues { - type - SEND_request, - RECEIVE_response - }; - import from LibIot_PIXITS { - modulepar - PX_IOT_TIMESTAMP_OFFSET, - PX_IOT_PCAP_SESSIONS_PATH, - PX_IOT_RECORD_MODE, - PX_IOT_EUTs_IFACE_INFO_LIST, - PX_IOT_FILE_MERGE_LIST, - PX_IOT_FILE_MERGE_PATH, - PX_IOT_MERGE_TOOL_PATH, - PX_IOT_IFACES; - } - import from AtsImsIot_PIXITS { - modulepar - PX_IMS_SUT_CONF_FACTORY_NAME, PX_IMS_SUT_CONF_HOME_DOMAIN - }; + import from LibSip_Common all; + import from LibMsrp_TypesAndValues all; + import from LibIot_PIXITS all; + import from AtsImsIot_PIXITS all; group adapterMsgTemplates { template SetFilterReq m_SetFilterReq(ProtocolFilter p_protocol, InterfaceInfoList p_iterfaces) := { @@ -2187,30 +2149,30 @@ module AtsImsIot_Templates { template UPDATE_Request mdw_TP_IMS_5106_02_f_ic( template CallId p_callId, template SipUrl p_SCSCF_URI - ) modifies mw_UPDATE_Request_Base := { - msgHeader := { - route := { - fieldName := ROUTE_E, - routeBody := { - mw_routeBody(p_SCSCF_URI), - * - } - } - } - } + ) modifies mw_UPDATE_Request_Base := { + msgHeader := { + route := { + fieldName := ROUTE_E, + routeBody := { + mw_routeBody(p_SCSCF_URI), + * + } + } + } + } /** * @desc OPTIONS Request checking TP_IMS_CONTENT_SHARE_01 */ template OPTIONS_Request mdw_TP_IMS_CONTENT_SHARE_01_ic( - template CallId p_callId - ) modifies mw_OPTIONS_Request_Base := { - msgHeader := { - acceptContact := mw_AcceptContact_share, - contact := mw_Contact_share + template CallId p_callId + ) modifies mw_OPTIONS_Request_Base := { + msgHeader := { + acceptContact := mw_AcceptContact_share, + contact := mw_Contact_share + } } - } /** @@ -2224,6 +2186,177 @@ module AtsImsIot_Templates { } } + template NameAddr mw_NameAddr_DispName_Tel( + template DisplayName p_displayName := *, + template(present) charstring p_number := ? + ) := { + displayName := p_displayName, + addrSpec := { + scheme := c_telScheme, //* contains "tel" + components := { + tel := { + subscriber := p_number + } + }, + urlParameters := *, + headers := * + } + } // End of template mw_NameAddr_DispName_Tel + + template(present) From mw_From_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := FROM_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + fromParams := * + } // End of template mw_From_AddrUnion_SipUrl + + template(present) From mw_From_AddrUnion_TelUrl( + template(present) charstring p_number := ? + ) := { + fieldName := FROM_E, + addressField := mw_AddrUnion_TelUrl(p_number), + fromParams := * + } // End of template mw_From_AddrUnion_TelUrl + + template From mw_From_NameAddr_TelUrl( + template DisplayName p_displayName := *, + template(present) charstring p_number := ? + ) := { + fieldName := FROM_E, + addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) }, + fromParams := * + } // End of template mw_From_NameAddr_TelUrl + + template(present) To mw_To_AddrUnion_SipUrl( + template DisplayName p_dn, + template(present) charstring p_user := ?, + template charstring p_host + ) := { + fieldName := TO_E, + addressField := mw_AddrUnion_SipUrl(p_user, p_host), + toParams := * + } // End of template mw_To_AddrUnion_SipUrl + + template(present) To mw_To_AddrUnion_TelUrl( + template(present) charstring p_number := ? + ) := { + fieldName := TO_E, + addressField := mw_AddrUnion_TelUrl(p_number), + toParams := * + } // End of template mw_To_AddrUnion_TelUrl + + template To mw_To_NameAddr_TelUrl( + template DisplayName p_displayName := *, + template(present) charstring p_number := ? + ) := { + fieldName := TO_E, + addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) }, + toParams := * + } // End of template mw_To_NameAddr_TelUrl + + template (present) Contact mw_contact( + template (present) ContactAddress p_contactAddresses := ? + ) := { + fieldName := CONTACT_E, + contactBody := { contactAddresses := { p_contactAddresses } } + } // End of template mw_Contact + + template (present) Response mw_200OK( + template (present) CSeq p_cSeq := ?, + template (present) CallId p_callId := ?, + template (present) From p_from := ?, + template (present) To p_to := ? + ) modifies mw_200OK_Base := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to + } + } // End of template mw_200OK + + template Response mw_401Unauthorized( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_401Unauthorized_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_401Unauthorized + + template Response mw_404NotFound( + template (present) CSeq p_cSeq := ?, + template (present) WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_404NotFound_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_404NotFound + + template Response mw_480TemporaryUnavailable( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template WwwAuthenticate p_wwwAuthenticate := * + ) modifies mw_480TemporaryUnavailable_Base := { + msgHeader := { + cSeq := p_cSeq, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_480TemporaryUnavailable + + template (present) Response mw_486Busy( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_486Busy_Base := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_486Busy + + template (present) Response mw_600BusyEverywhere( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_600BusyEverywhere_Base := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_600BusyEverywhere + + template (present) Response mw_487RequestTerminated( + template (present) CallId p_callId := ?, + template (present) CSeq p_cSeq := ?, + template (present) From p_from := ?, + template (present) To p_to := ?, + template WwwAuthenticate p_wwwAuthenticate := ? + ) modifies mw_487RequestTerminated_Base := { + msgHeader := { + callId := p_callId, + cSeq := p_cSeq, + fromField := p_from, + toField := p_to, + wwwAuthenticate := p_wwwAuthenticate + } + } // End of template mw_487RequestTerminated + } // End of group modifiedSIPBaseTemplates group EmergencySIPTemplates { diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn index 35b6edd..106f465 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_GM.ttcn @@ -47,152 +47,143 @@ module AtsImsIot_Templates_GM { } } // End of template mw_NameAddr_DispName_Tel - template(present) From mw_From_AddrUnion_SipUrl( - template DisplayName p_dn, - template(present) charstring p_user := ?, - template charstring p_host - ) := { - fieldName := FROM_E, - addressField := mw_AddrUnion_SipUrl(p_user, p_host), - fromParams := * - } // End of template mw_From_AddrUnion_SipUrl - - template(present) From mw_From_AddrUnion_TelUrl( - template(present) charstring p_number := ? - ) := { - fieldName := FROM_E, - addressField := mw_AddrUnion_TelUrl(p_number), - fromParams := * - } // End of template mw_From_AddrUnion_TelUrl - - template From mw_From_NameAddr_TelUrl( - template DisplayName p_displayName := *, - template(present) charstring p_number := ? - ) := { - fieldName := FROM_E, - addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) }, - fromParams := * - } // End of template mw_From_NameAddr_TelUrl - - template(present) To mw_To_AddrUnion_SipUrl( - template DisplayName p_dn, - template(present) charstring p_user := ?, - template charstring p_host - ) := { - fieldName := TO_E, - addressField := mw_AddrUnion_SipUrl(p_user, p_host), - toParams := * - } // End of template mw_To_AddrUnion_SipUrl - - template(present) To mw_To_AddrUnion_TelUrl( - template(present) charstring p_number := ? - ) := { - fieldName := TO_E, - addressField := mw_AddrUnion_TelUrl(p_number), - toParams := * - } // End of template mw_To_AddrUnion_TelUrl - - template To mw_To_NameAddr_TelUrl( - template DisplayName p_displayName := *, - template(present) charstring p_number := ? - ) := { - fieldName := TO_E, - addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) }, - toParams := * - } // End of template mw_To_NameAddr_TelUrl - - template (present) Response mw_200OK( - template (present) CSeq p_cSeq := ?, - template (present) CallId p_callId := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_200OK_Base := { - msgHeader := { - callId := p_callId, - cSeq := p_cSeq, - fromField := p_from, - toField := p_to - } - } // End of template mw_200OK - - template (present) Response mw_401Unauthorized( - template (present) CSeq p_cSeq := ?, - template (present) WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_401Unauthorized_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_401Unauthorized - - template (present) Response mw_404NotFound( - template (present) CSeq p_cSeq := ?, - template (present) WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_404NotFound_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_404NotFound - - template Response mw_480TemporaryUnavailable( - template (present) CallId p_callId := ?, - template (present) CSeq p_cSeq := ?, - template WwwAuthenticate p_wwwAuthenticate := * - ) modifies mw_480TemporaryUnavailable_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_480TemporaryUnavailable - - template (present) Response mw_486Busy( - template (present) CallId p_callId := ?, - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ?, - template WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_486Busy_Base := { - msgHeader := { - callId := p_callId, - cSeq := p_cSeq, - fromField := p_from, - toField := p_to, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_486Busy - - template (present) Response mw_600BusyEverywhere( - template (present) CallId p_callId := ?, - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ?, - template WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_600BusyEverywhere_Base := { - msgHeader := { - callId := p_callId, - cSeq := p_cSeq, - fromField := p_from, - toField := p_to, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_600BusyEverywhere - - template (present) Response mw_487RequestTerminated( - template (present) CallId p_callId := ?, - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ?, - template WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_487RequestTerminated_Base := { - msgHeader := { - callId := p_callId, - cSeq := p_cSeq, - fromField := p_from, - toField := p_to, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_487RequestTerminated + // template(present) From mw_From_AddrUnion_SipUrl( + // template DisplayName p_dn, + // template(present) charstring p_user := ?, + // template charstring p_host + // ) := { + // fieldName := FROM_E, + // addressField := mw_AddrUnion_SipUrl(p_user, p_host), + // fromParams := * + // } // End of template mw_From_AddrUnion_SipUrl + + // template(present) From mw_From_AddrUnion_TelUrl( + // template(present) charstring p_number := ? + // ) := { + // fieldName := FROM_E, + // addressField := mw_AddrUnion_TelUrl(p_number), + // fromParams := * + // } // End of template mw_From_AddrUnion_TelUrl + + // template From mw_From_NameAddr_TelUrl( + // template DisplayName p_displayName := *, + // template(present) charstring p_number := ? + // ) := { + // fieldName := FROM_E, + // addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) }, + // fromParams := * + // } // End of template mw_From_NameAddr_TelUrl + + // template(present) To mw_To_AddrUnion_SipUrl( + // template DisplayName p_dn, + // template(present) charstring p_user := ?, + // template charstring p_host + // ) := { + // fieldName := TO_E, + // addressField := mw_AddrUnion_SipUrl(p_user, p_host), + // toParams := * + // } // End of template mw_To_AddrUnion_SipUrl + + // template(present) To mw_To_AddrUnion_TelUrl( + // template(present) charstring p_number := ? + // ) := { + // fieldName := TO_E, + // addressField := mw_AddrUnion_TelUrl(p_number), + // toParams := * + // } // End of template mw_To_AddrUnion_TelUrl + + // template To mw_To_NameAddr_TelUrl( + // template DisplayName p_displayName := *, + // template(present) charstring p_number := ? + // ) := { + // fieldName := TO_E, + // addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) }, + // toParams := * + // } // End of template mw_To_NameAddr_TelUrl + + // template (present) Contact mw_contact( + // template (present) ContactAddress p_contactAddresses := ? + // ) := { + // fieldName := CONTACT_E, + // contactBody := { contactAddresses := { p_contactAddresses } } + // } // End of template mw_Contact + + // template (present) Response mw_200OK( + // template (present) CSeq p_cSeq := ?, + // template (present) CallId p_callId := ?, + // template (present) From p_from := ?, + // template (present) To p_to := ? + // ) modifies mw_200OK_Base := { + // msgHeader := { + // callId := p_callId, + // cSeq := p_cSeq, + // fromField := p_from, + // toField := p_to + // } + // } // End of template mw_200OK + + // template (present) Response mw_401Unauthorized( + // template (present) CSeq p_cSeq := ?, + // template (present) WwwAuthenticate p_wwwAuthenticate := ? + // ) modifies mw_401Unauthorized_Base := { + // msgHeader := { + // cSeq := p_cSeq, + // wwwAuthenticate := p_wwwAuthenticate + // } + // } // End of template mw_401Unauthorized + + // template (present) Response mw_404NotFound( + // template (present) CSeq p_cSeq := ?, + // template (present) WwwAuthenticate p_wwwAuthenticate := ? + // ) modifies mw_404NotFound_Base := { + // msgHeader := { + // cSeq := p_cSeq, + // wwwAuthenticate := p_wwwAuthenticate + // } + // } // End of template mw_404NotFound + + // template Response mw_480TemporaryUnavailable( + // template (present) CallId p_callId := ?, + // template (present) CSeq p_cSeq := ?, + // template WwwAuthenticate p_wwwAuthenticate := * + // ) modifies mw_480TemporaryUnavailable_Base := { + // msgHeader := { + // cSeq := p_cSeq, + // wwwAuthenticate := p_wwwAuthenticate + // } + // } // End of template mw_480TemporaryUnavailable + + // template (present) Response mw_486Busy( + // template (present) CallId p_callId := ?, + // template (present) CSeq p_cSeq := ?, + // template (present) From p_from := ?, + // template (present) To p_to := ?, + // template WwwAuthenticate p_wwwAuthenticate := ? + // ) modifies mw_486Busy_Base := { + // msgHeader := { + // callId := p_callId, + // cSeq := p_cSeq, + // fromField := p_from, + // toField := p_to, + // wwwAuthenticate := p_wwwAuthenticate + // } + // } // End of template mw_486Busy + + // template (present) Response mw_600BusyEverywhere( + // template (present) CallId p_callId := ?, + // template (present) CSeq p_cSeq := ?, + // template (present) From p_from := ?, + // template (present) To p_to := ?, + // template WwwAuthenticate p_wwwAuthenticate := ? + // ) modifies mw_600BusyEverywhere_Base := { + // msgHeader := { + // callId := p_callId, + // cSeq := p_cSeq, + // fromField := p_from, + // toField := p_to, + // wwwAuthenticate := p_wwwAuthenticate + // } + // } // End of template mw_600BusyEverywhere } // End of group sip_templates diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn index 4624eff..3d86c74 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_IC.ttcn @@ -6,46 +6,16 @@ module AtsImsIot_Templates_IC { - import from LibCommon_BasicTypesAndValues {type UInt16;} - import from LibCommon_VerdictControl {type FncRetCode;} - import from LibIot_TypesAndValues { - type - InterfaceInfoList, - ProtocolFilter, - GeneralConfigurationReq, - GeneralConfigurationRsp, - SetFilterReq, - SetFilterRsp, - StartTrafficCaptureReq, - StartTrafficCaptureRsp, - StopTrafficCaptureReq, - StopTrafficCaptureRsp, - IpAddress, - Status; - } - import from AtsImsIot_TypesAndValues {type SipMessage, NAPTRmessage;} + import from LibCommon_BasicTypesAndValues all; + import from LibCommon_VerdictControl all; + import from LibIot_TypesAndValues all; + import from AtsImsIot_TypesAndValues all; import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; - import from LibSip_Common {type GenericParam, SemicolonParam_List;} - import from LibMsrp_TypesAndValues {type SEND_request, RECEIVE_response;} - import from LibIot_PIXITS { - modulepar - PX_IOT_TIMESTAMP_OFFSET, - PX_IOT_PCAP_SESSIONS_PATH, - PX_IOT_RECORD_MODE, - PX_IOT_EUTs_IFACE_INFO_LIST, - PX_IOT_FILE_MERGE_LIST, - PX_IOT_FILE_MERGE_PATH, - PX_IOT_MERGE_TOOL_PATH, - PX_IOT_IFACES; - } - import from AtsImsIot_PIXITS { - modulepar - PX_IMS_SUT_CONF_FACTORY_NAME, - PX_IMS_SUT_CONF_HOME_DOMAIN, - PX_IMS_A_ICID; - } - + import from LibSip_Common all; + import from LibMsrp_TypesAndValues all; + import from LibIot_PIXITS all; + import from AtsImsIot_PIXITS all; import from AtsImsIot_Templates all; group g_IBCF { diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn new file mode 100644 index 0000000..448ec57 --- /dev/null +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MI.ttcn @@ -0,0 +1,188 @@ +/* + * @author STF 574 + * @version $Id$ + * @desc This module provides TP related templates used at MI interface + */ +module AtsImsIot_Templates_MI { + + // LibCommon + //import from LibCommon_BasicTypesAndValues all; + //import from LibCommon_VerdictControl all; + + // libSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Common all; + + // LibIms + import from LibIms_Templates all; + + //import from LibMsrp_TypesAndValues all; + + // LibIot + //import from LibIot_TypesAndValues all; + import from LibIot_PIXITS all; + + // AtsImsIot + //import from AtsImsIot_TypesAndValues all; + import from AtsImsIot_PIXITS all; + import from AtsImsIot_Templates all; + + /** + * @desc INVITE Request checking TP_MI_BGCF_INVITE_01 + */ + template(present) INVITE_Request mw_TP_MI_BGCF_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 := ?}, + *, +// complement({id := "term-ioi", paramValue := ?}), + *, + complement({id := "access-network-charging-info", paramValue := ?}), + * + } + }, + pAccessNetworkInfo := omit + } + } + + template (present) Response mw_TP_MI_BGCF_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_MI_BGCF_100Trying_01 + + template (present) Response mw_TP_MI_BGCF_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_MI_BGCF_180Ringing_01 + + template (present) Response mw_TP_MI_BGCF_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_MI_BGCF_183SessionProgress_01 + + template (present) ACK_Request mw_TP_MI_BGCF_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_MI_BGCF_ACK_01 + + template (present) BYE_Request mw_TP_MI_BGCF_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_MW_PCSCF_BYE_01 + + template (present) CANCEL_Request mw_TP_MI_BGCF_CANCEL_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_CANCEL_Request_Base := { + requestLine := { + method := CANCEL_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_MI_BGCF_CANCEL_01 + +} // End of module AtsImsIot_Templates_MI diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn index 073ab4a..47259fc 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_ML.ttcn @@ -80,4 +80,13 @@ module AtsImsIot_Templates_ML { } } // End of template mw_TP_ML_ECSCF_3XX_Base_01 + template (present) Response mw_3xxContact( + template (present) CSeq p_cSeq := ?, + Accept p_accept) modifies mdw_3XX_Base := { + msgHeader := { + cSeq := p_cSeq, + accept := p_accept + } + } // End of template mw_3xxContact + } // End of module AtsImsIot_Templates_ML diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn index f0ca8b4..0a37e1e 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MM.ttcn @@ -29,9 +29,9 @@ module AtsImsIot_Templates_MM { import from AtsImsIot_Templates all; /** - * @desc INVITE Request checking TP_MM_PSAP_INVITE_01 + * @desc INVITE Request checking TP_MM_ECSCF_INVITE_01 */ - template(present) INVITE_Request mw_TP_MM_PSAP_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?, + template(present) INVITE_Request mw_TP_MM_ECSCF_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?, template (present) From p_from := ?, template (present) To p_to := ?) modifies mw_INVITE_Request_Base := { @@ -68,7 +68,7 @@ module AtsImsIot_Templates_MM { } } - template (present) Response mw_TP_MM_PSAP_100Trying_01( + template (present) Response mw_TP_MM_ECSCF_100Trying_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ? @@ -78,9 +78,9 @@ module AtsImsIot_Templates_MM { fromField := p_from, toField := p_to } - } // End of template mw_TP_MM_PSAP_100Trying_01 + } // End of template mw_TP_MM_ECSCF_100Trying_01 - template (present) Response mw_TP_MM_PSAP_180Ringing_01( + template (present) Response mw_TP_MM_ECSCF_180Ringing_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ? @@ -90,9 +90,9 @@ module AtsImsIot_Templates_MM { fromField := p_from, toField := p_to } - } // End of template mw_TP_MM_PSAP_180Ringing_01 + } // End of template mw_TP_MM_ECSCF_180Ringing_01 - template (present) Response mw_TP_MM_PSAP_183SessionProgress_01( + template (present) Response mw_TP_MM_ECSCF_183SessionProgress_01( template (present) CSeq p_cSeq := ?, template (present) From p_from := ?, template (present) To p_to := ? @@ -102,9 +102,9 @@ module AtsImsIot_Templates_MM { fromField := p_from, toField := p_to } - } // End of template mw_TP_MM_PSAP_183SessionProgress_01 + } // End of template mw_TP_MM_ECSCF_183SessionProgress_01 - template (present) ACK_Request mw_TP_MM_PSAP_ACK_01( // TODO To be enforced + template (present) ACK_Request mw_TP_MM_ECSCF_ACK_01( // TODO To be enforced template (present) CallId p_callId := ?, template (present) CSeq p_cSeq := ?, template (present) SipUrl p_ack_uri := ?, @@ -129,15 +129,15 @@ module AtsImsIot_Templates_MM { } } } - } // End of template mw_TP_MM_PSAP_ACK_01 + } // End of template mw_TP_MM_ECSCF_ACK_01 - 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 := { + template (present) BYE_Request mw_TP_MM_ECSCF_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 @@ -157,6 +157,32 @@ module AtsImsIot_Templates_MM { } } } // End of template mw_TP_MW_PCSCF_BYE_01 - + + template (present) CANCEL_Request mw_TP_MM_ECSCF_CANCEL_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_CANCEL_Request_Base := { + requestLine := { + method := CANCEL_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_ECSCF_CANCEL_01 } // End of module AtsImsIot_Templates_MM diff --git a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn index bede675..05dd774 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Templates_MW.ttcn @@ -28,181 +28,6 @@ module AtsImsIot_Templates_MW { import from AtsImsIot_PIXITS all; import from AtsImsIot_Templates all; - group sip_templates { - - template NameAddr mw_NameAddr_DispName_Tel( - template DisplayName p_displayName := *, - template(present) charstring p_number := ? - ) := { - displayName := p_displayName, - addrSpec := { - scheme := c_telScheme, //* contains "tel" - components := { - tel := { - subscriber := p_number - } - }, - urlParameters := *, - headers := * - } - } // End of template mw_NameAddr_DispName_Tel - - template(present) From mw_From_AddrUnion_SipUrl( - template DisplayName p_dn, - template(present) charstring p_user := ?, - template charstring p_host - ) := { - fieldName := FROM_E, - addressField := mw_AddrUnion_SipUrl(p_user, p_host), - fromParams := * - } // End of template mw_From_AddrUnion_SipUrl - - template(present) From mw_From_AddrUnion_TelUrl( - template(present) charstring p_number := ? - ) := { - fieldName := FROM_E, - addressField := mw_AddrUnion_TelUrl(p_number), - fromParams := * - } // End of template mw_From_AddrUnion_TelUrl - - template From mw_From_NameAddr_TelUrl( - template DisplayName p_displayName := *, - template(present) charstring p_number := ? - ) := { - fieldName := FROM_E, - addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) }, - fromParams := * - } // End of template mw_From_NameAddr_TelUrl - - template(present) To mw_To_AddrUnion_SipUrl( - template DisplayName p_dn, - template(present) charstring p_user := ?, - template charstring p_host - ) := { - fieldName := TO_E, - addressField := mw_AddrUnion_SipUrl(p_user, p_host), - toParams := * - } // End of template mw_To_AddrUnion_SipUrl - - template(present) To mw_To_AddrUnion_TelUrl( - template(present) charstring p_number := ? - ) := { - fieldName := TO_E, - addressField := mw_AddrUnion_TelUrl(p_number), - toParams := * - } // End of template mw_To_AddrUnion_TelUrl - - template To mw_To_NameAddr_TelUrl( - template DisplayName p_displayName := *, - template(present) charstring p_number := ? - ) := { - fieldName := TO_E, - addressField := { nameAddr := mw_NameAddr_DispName_Tel(p_displayName, p_number) }, - toParams := * - } // End of template mw_To_NameAddr_TelUrl - - template (present) Contact mw_contact( - template (present) ContactAddress p_contactAddresses := ? - ) := { - fieldName := CONTACT_E, - contactBody := { contactAddresses := { p_contactAddresses } } - } // End of template mw_Contact - - template (present) Response mw_200OK( - template (present) CSeq p_cSeq := ?, - template (present) CallId p_callId := ?, - template (present) From p_from := ?, - template (present) To p_to := ? - ) modifies mw_200OK_Base := { - msgHeader := { - callId := p_callId, - cSeq := p_cSeq, - fromField := p_from, - toField := p_to - } - } // End of template mw_200OK - - template Response mw_401Unauthorized( - template (present) CSeq p_cSeq := ?, - template (present) WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_401Unauthorized_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_401Unauthorized - - template Response mw_404NotFound( - template (present) CSeq p_cSeq := ?, - template (present) WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_404NotFound_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_404NotFound - - template Response mw_480TemporaryUnavailable( - template (present) CallId p_callId := ?, - template (present) CSeq p_cSeq := ?, - template WwwAuthenticate p_wwwAuthenticate := * - ) modifies mw_480TemporaryUnavailable_Base := { - msgHeader := { - cSeq := p_cSeq, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_480TemporaryUnavailable - - template (present) Response mw_486Busy( - template (present) CallId p_callId := ?, - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ?, - template WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_486Busy_Base := { - msgHeader := { - callId := p_callId, - cSeq := p_cSeq, - fromField := p_from, - toField := p_to, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_486Busy - - template (present) Response mw_600BusyEverywhere( - template (present) CallId p_callId := ?, - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ?, - template WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_600BusyEverywhere_Base := { - msgHeader := { - callId := p_callId, - cSeq := p_cSeq, - fromField := p_from, - toField := p_to, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_600BusyEverywhere - - template (present) Response mw_487RequestTerminated( - template (present) CallId p_callId := ?, - template (present) CSeq p_cSeq := ?, - template (present) From p_from := ?, - template (present) To p_to := ?, - template WwwAuthenticate p_wwwAuthenticate := ? - ) modifies mw_487RequestTerminated_Base := { - msgHeader := { - callId := p_callId, - cSeq := p_cSeq, - fromField := p_from, - toField := p_to, - wwwAuthenticate := p_wwwAuthenticate - } - } // End of template mw_487RequestTerminated - - } // End of group sip_templates - group g_pcscf { template(present) REGISTER_Request mw_TP_MW_PCSCF_REGISTER_01( @@ -1092,6 +917,33 @@ module AtsImsIot_Templates_MW { } } // End of template mw_TP_MW_PCSCF_BYE_01 + template (present) CANCEL_Request mw_TP_MW_ECSCF_CANCEL_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_CANCEL_Request_Base := { + requestLine := { + method := CANCEL_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_MW_PCSCF_CANCEL_01 + } group g_ibcf { @@ -1226,6 +1078,33 @@ module AtsImsIot_Templates_MW { } } // End of template mw_TP_MW_IBCF_BYE_01 + template (present) CANCEL_Request mw_TP_MW_IBCF_CANCEL_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_CANCEL_Request_Base := { + requestLine := { + method := CANCEL_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_MW_IBCF_CANCEL_01 + } } // End of module AtsImsIot_Templates_MW \ No newline at end of file diff --git a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn index b43963b..ec88bbc 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn @@ -9,25 +9,19 @@ module AtsImsIot_TestConfiguration { - import from LibCommon_VerdictControl { type FncRetCode; } + import from LibCommon_VerdictControl all; /*language "TTCN-3:2008 Amendment 1" - FSCOM/YGA*/ - import from LibIms_UpperTester { modulepar PX_IMS_USER_DATA; } - import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B, PX_PRODUCTS, PX_MAX_MSG_WAIT; } - import from LibIot_TypesAndValues { - type StartTrafficCaptureRsp, StopTrafficCaptureRsp, MonitorInterfaceInfo, InterfaceInfo, InterfaceInfoList, Product, - ProtocolFilter, StartTrafficCaptureRsp, StopTrafficCaptureRsp, SetFilterReq, SetFilterRsp, Status; } + import from LibIms_UpperTester all; + import from LibIot_PIXITS all; + import from LibIot_TypesAndValues all; /*language "TTCN-3:2008 Amendment 1" - FSCOM/YGA*/ - import from LibIot_Functions { altstep a_receiveIOTVerdict; function f_setConformanceVerdict, f_setE2EVerdict; } - import from LibIot_TestConfiguration { function f_cf_oracle_up, f_cf_oracle_down; } - import from LibIot_TestInterface {type IotEquipmentUser;} - import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, SipInterfaceMonitor, DiameterInterfaceMonitor, NaptrInterfaceMonitor, SgiInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL, CF_ATT, CF_ATT_old;} - import from LibIot_TestInterface {type InterfaceMonitor;} - import from AtsImsIot_Templates { - template m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge, - m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout, - m_SetFilterReq, mw_SetFilterRsp, m_startTrafficCaptureReq, m_stopTrafficCaptureReq, - m_startTrafficCaptureRsp_any, m_stopTrafficCaptureRsp_any; } - import from AtsImsIot_Functions {function f_setInterfaceNameOnComponent, f_setInterfaceInfoComponent;} + import from LibIot_Functions all; + import from LibIot_TestConfiguration all; + import from LibIot_TestInterface all; + import from AtsImsIot_TestSystem all; + import from LibIot_TestInterface all; + import from AtsImsIot_Templates all; + import from AtsImsIot_Functions all; group constantDefinitions { //* interface monitor name Gm A diff --git a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn index f0d76d6..890c4af 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn @@ -1,12 +1,12 @@ module AtsImsIot_TestSystem { - import from LibSip_SIPTypesAndValues {type Request, Response;} - import from LibMsrp_TypesAndValues {type SEND_request, RECEIVE_response;} - import from AtsImsIot_TypesAndValues {type SipMessage, NAPTRmessage;} - import from LibIot_TestInterface {type EquipmentAccessPort;} + import from LibSip_SIPTypesAndValues all; + import from LibMsrp_TypesAndValues all; + import from AtsImsIot_TypesAndValues all; import from LibIot_TestInterface all; - import from LibIot_TypesAndValues {type VxLTEMonitorInterfaceList;} - import from LibDiameter_TypesAndValues {type DIAMETER_MSG;} + import from LibIot_TestInterface all; + import from LibIot_TypesAndValues all; + import from LibDiameter_TypesAndValues all; /** * @desc interfaces to the SUT diff --git a/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn b/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn index 61a232b..961f35c 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TypesAndValues.ttcn @@ -7,14 +7,10 @@ module AtsImsIot_TypesAndValues { import from LibCommon_BasicTypesAndValues all; - import from LibSip_SIPTypesAndValues {type Request, SipUrl, Response;} - import from LibMsrp_TypesAndValues { - type - SEND_request, - RECEIVE_response - }; + import from LibSip_SIPTypesAndValues all; + import from LibMsrp_TypesAndValues all; import from LibDiameter_TypesAndValues {type DIAMETER_MSG} - import from LibCommon_DataStrings {type Bit1, Bit3}; + import from LibCommon_DataStrings all; group SIPmessageTypes { /** -- GitLab From 61e9ed2af768232bd3aa7b80cf95ac826b77485f Mon Sep 17 00:00:00 2001 From: garciay Date: Fri, 4 Aug 2023 11:03:04 +0200 Subject: [PATCH 2/4] TTF T010 FSCOM week#31 session --- ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn | 6 ++-- ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn | 31 ++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn b/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn index a3d29d9..8004e35 100644 --- a/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_Emergency.ttcn @@ -2570,7 +2570,7 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 12 f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip); - f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11 + f_mtc_check_TP_MW_IBCF_INVITE_01(vc_vxlte_monitor_components.mwEB); // Event 11 f_mtc_check_TP_MW_IBSCF_100Trying_01(vc_vxlte_monitor_components.mwEB, -, v_sip); f_mtc_check_TP_IC_IBCF_INVITE_01(vc_vxlte_monitor_components.ic); // INVITE Event 12 (NOTE: comment out if ISC simulated by Ic) @@ -2682,8 +2682,8 @@ module AtsImsIot_Emergency { f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 20 // 480 Temporary Unavailable - f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 21 - f_mtc_check_TP_MI_BGCF_ECO_480TEMPAV_PROGRESS_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 22 + f_mtc_check_TP_MM_ECSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 21 + f_mtc_check_TP_MI_BGCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 22 f_mtc_check_TP_MW_PCSCF_ECO_480TEMPAV_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23 f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // Event 24 diff --git a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn index 1dc3357..44d7029 100644 --- a/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn +++ b/ttcn/AtsImsIot/AtsImsIot_TP_behavior_MI.ttcn @@ -644,4 +644,35 @@ module AtsImsIot_TP_behavior_MI { } // End of group imsRequestTermination + group imsTemporaryUnavailable { + + function f_mtc_check_TP_MI_BGCF_ECO_480TEMPAV_01( + in SipInterfaceMonitor p_monitorCompRef, + in boolean p_checkMessage := false, + inout SipMessage p_sip + ) runs on ImsTestCoordinator { + if (isvalue(p_monitorCompRef)) { + // Check the 487 Request Terminated + p_monitorCompRef.start( + f_Iot_Sip_receive( + { + mw_SipResponse(mw_480TemporaryUnavailable(-, p_sip.request.msgHeader.cSeq)) + }, + { + mw_SipResponse(mdw_4XX_Base) + }, + { 0, omit }, + "TP_MI_BGCF_480TEMPAV_01", + true, + p_checkMessage + ) + ); + p_monitorCompRef.done; + // Retrieve messge + f_getSipMsgFromMonitor(p_monitorCompRef, p_sip); + } + } // End of function f_mtc_check_TP_MI_BGCF_ECO_480TEMPAV_01 + + } // End of group imsTemporaryUnavailable + } // End of module AtsImsIot_TP_behavior_MI \ No newline at end of file -- GitLab From 95455d42d4501192ae0d62a7a99cef9381d49458 Mon Sep 17 00:00:00 2001 From: pintar Date: Fri, 18 Aug 2023 20:17:41 +0200 Subject: [PATCH 3/4] Tests added and minor changes --- test_purposes/E_CSCF/TP_E_CSCF.tplan2 | 63 +++++++++------------------ 1 file changed, 20 insertions(+), 43 deletions(-) diff --git a/test_purposes/E_CSCF/TP_E_CSCF.tplan2 b/test_purposes/E_CSCF/TP_E_CSCF.tplan2 index dc64b90..af50eee 100644 --- a/test_purposes/E_CSCF/TP_E_CSCF.tplan2 +++ b/test_purposes/E_CSCF/TP_E_CSCF.tplan2 @@ -29,8 +29,7 @@ Package TP_E_CSCF { TP Id TP_I4_ECSCF_ECO_INVITE_01 /* I4 interface at E-CSCF/EATF */ - Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF - and routes the request to the EATF." + Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the EATF." Reference "ETSI TS 124 229 [1], Clauses 5.11.2 1)" @@ -83,8 +82,7 @@ Package TP_E_CSCF { TP Id TP_ML_ECSCF_ECO_INVITE_01 /* MI interface at E-CSCF/LRF */ - Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF - and routes the request to the LRF." + Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the LRF." Reference "ETSI TS 124 229 [1], Clauses 5.11.3" @@ -133,8 +131,7 @@ Package TP_E_CSCF { TP Id TP_MM_ECSCF_ECO_INVITE_01 /* Mm interface at E-CSCF/IM CN subsystem of own network */ - Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF - and routes the request to the PSAP in the IM CN subsystem of own network." + Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the PSAP in the IM CN subsystem of own network." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -182,9 +179,7 @@ Package TP_E_CSCF { TP Id TP_MM_ECSCF_ECO_INVITE_02 /* Mm interface at E-CSCF/IM CN subsystem of own network */ - Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF - and routes the request to the PSAP in the IM CN subsystem of own network - and includes the LRF provided URI in the Route header." + Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the PSAP in the IM CN subsystem of own network and includes the LRF provided URI in the Route header." Reference "ETSI TS 124 229 [1], Clauses 5.11.2 and 5.11.3" @@ -228,8 +223,7 @@ Package TP_E_CSCF { TP Id TP_MX_ECSCF_ECO_INVITE_01 /* Mx interface at E-CSCF/IBCF */ - Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF - and routes the request to the IBCF for a PSAP in another network." + Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the IBCF for a PSAP in another network." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -280,9 +274,7 @@ Package TP_E_CSCF { TP Id TP_MX_ECSCF_ECO_INVITE_02 /* Mx interface at E-CSCF/IBCF */ - Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF - and routes the request to the IBCF for a PSAP in another network - and includes the LRF provided URI in the Route header." + Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the IBCF for a PSAP in another network and includes the LRF provided URI in the Route header." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -329,8 +321,7 @@ Package TP_E_CSCF { TP Id TP_MI_ECSCF_ECO_INVITE_01 /* Mx interface at E-CSCF/BGCF */ - Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF - and routes the request to the BGCF for a PSAP in the PSTN." + Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the BGCF for a PSAP in the PSTN." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -381,9 +372,7 @@ Package TP_E_CSCF { TP Id TP_MI_ECSCF_ECO_INVITE_02 /* Mx interface at E-CSCF/BGCF */ - Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF - and routes the request to the BGCF for a PSAP in the PSTN - and includes the LRF provided URI in the Request-URI." + Test objective "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the BGCF for a PSAP in the PSTN and includes the LRF provided URI in the Request-URI." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -430,8 +419,7 @@ Package TP_E_CSCF { TP Id TP_MM_ECSCF_ECO_BYE_01 /* Mm interface at E-CSCF/IM CN subsystem of own network */ - Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency - Call and routes the request to the PSAP in the IM CN subsystem of own network." + Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the PSAP in the IM CN subsystem of own network." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -473,8 +461,7 @@ Package TP_E_CSCF { TP Id TP_MM_ECSCF_ECO_BYE_02 /* Mm interface at E-CSCF/IM CN subsystem of own network */ - Test objective "Verify that the E-CSCF successfully processes a BYE from the PSAP in the IM CN subsystem for an Emergency - Call and routes the request to the P-CSCF of home network." + Test objective "Verify that the E-CSCF successfully processes a BYE from the PSAP in the IM CN subsystem for an Emergency Call and routes the request to the P-CSCF of home network." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -517,8 +504,7 @@ Package TP_E_CSCF { TP Id TP_MX_ECSCF_ECO_BYE_01 /* Mx interface at E-CSCF/IBCF */ - Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency - Call and routes the request to the IBCF for a PSAP in another network." + Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the IBCF for a PSAP in another network." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -561,8 +547,7 @@ Package TP_E_CSCF { TP Id TP_MX_ECSCF_ECO_BYE_02 /* Mx interface at E-CSCF/IBCF */ - Test objective "Verify that the E-CSCF successfully processes a BYE from the IBCF for a PSAP in another - network for an Emergency Call and routes the request to the P-CSCF." + Test objective "Verify that the E-CSCF successfully processes a BYE from the IBCF for a PSAP in another network for an Emergency Call and routes the request to the P-CSCF." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -605,8 +590,7 @@ Package TP_E_CSCF { TP Id TP_MI_ECSCF_ECO_BYE_01 /* Mx interface at E-CSCF/BGCF */ - Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency - Call and routes the request to the BGCF for a PSAP in the PSTN." + Test objective "Verify that the E-CSCF successfully processes a BYE from the P-CSCF for an Emergency Call and routes the request to the BGCF for a PSAP in the PSTN." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -649,8 +633,7 @@ Package TP_E_CSCF { TP Id TP_MI_ECSCF_ECO_BYE_02 /* Mx interface at E-CSCF/BGCF */ - Test objective "Verify that the E-CSCF successfully processes a BYE from the BGCF for a PSAP in the - PSTN for an Emergency Call and routes the request to the P-CSCF." + Test objective "Verify that the E-CSCF successfully processes a BYE from the BGCF for a PSAP in the PSTN for an Emergency Call and routes the request to the P-CSCF." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -693,8 +676,7 @@ Package TP_E_CSCF { TP Id TP_MM_ECSCF_ECO_CANCEL_01 /* Mm interface at E-CSCF/IM CN subsystem of own network */ - Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency - Call under establishment and routes the request to the PSAP in the IM CN subsystem of own network." + Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the PSAP in the IM CN subsystem of own network." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -737,8 +719,7 @@ Package TP_E_CSCF { TP Id TP_MX_ECSCF_ECO_CANCEL_01 /* Mx interface at E-CSCF/IBCF */ - Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency - Call under establishment and routes the request to the IBCF for a PSAP in another network." + Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the IBCF for a PSAP in another network." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -781,8 +762,7 @@ Package TP_E_CSCF { TP Id TP_MI_ECSCF_ECO_CANCEL_01 /* Mx interface at E-CSCF/BGCF */ - Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency - Call under establishment and routes the request to the BGCF for a PSAP in the PSTN." + Test objective "Verify that the E-CSCF successfully processes a CANCEL from the P-CSCF for an Emergency Call under establishment and routes the request to the BGCF for a PSAP in the PSTN." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -824,8 +804,7 @@ Package TP_E_CSCF { TP Id TP_MM_ECSCF_ECO_480INVITE_01 /* Mm interface at E-CSCF/IM CN subsystem of own network */ - Test objective "Verify that the E-CSCF successfully processes a 480 response from the PSAP in the IM CN subsystem for an Emergency - Call and routes the response to the P-CSCF of home network." + Test objective "Verify that the E-CSCF successfully processes a 480 response from the PSAP in the IM CN subsystem for an Emergency Call and routes the response to the P-CSCF of home network." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -868,8 +847,7 @@ Package TP_E_CSCF { TP Id TP_MX_ECSCF_ECO_480INVITE_01 /* Mx interface at E-CSCF/IBCF */ - Test objective "Verify that the E-CSCF successfully processes a 480 response from the IBCF for a PSAP in another - network for an Emergency Call and routes the response to the P-CSCF." + Test objective "Verify that the E-CSCF successfully processes a 480 response from the IBCF for a PSAP in another network for an Emergency Call and routes the response to the P-CSCF." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" @@ -912,8 +890,7 @@ Package TP_E_CSCF { TP Id TP_MI_ECSCF_ECO_480INVITE_01 /* Mx interface at E-CSCF/BGCF */ - Test objective "Verify that the E-CSCF successfully processes a 480 response from the BGCF for a PSAP in the - PSTN for an Emergency Call and routes the response to the P-CSCF." + Test objective "Verify that the E-CSCF successfully processes a 480 response from the BGCF for a PSAP in the PSTN for an Emergency Call and routes the response to the P-CSCF." Reference "ETSI TS 124 229 [1], Clauses 5.11.2" -- GitLab From 0d3a77d438326dc738fa536be5f205b0d9e58e47 Mon Sep 17 00:00:00 2001 From: pintar Date: Tue, 22 Aug 2023 10:52:24 +0200 Subject: [PATCH 4/4] New TPs added --- test_purposes/Gm/TP_GM.tplan2 | 90 ++++++++++++++++++++++++++++ test_purposes/Mw/TP_MW_PS.tplan2 | 100 +++++++++++++++++++++++++++++++ 2 files changed, 190 insertions(+) diff --git a/test_purposes/Gm/TP_GM.tplan2 b/test_purposes/Gm/TP_GM.tplan2 index ec5b6f4..55cb9a5 100644 --- a/test_purposes/Gm/TP_GM.tplan2 +++ b/test_purposes/Gm/TP_GM.tplan2 @@ -495,6 +495,96 @@ Package TP_GM { } } // End of TP_GM_PCSCF_ECO_CANCEL_01 + + Test Purpose { + + TP Id TP_GM_PCSCF_ECO_200OK_BYE_01 + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Originating Leg)." + + Reference + "ETSI TS 124 229 [1], Clauses 5.1.5 and 6.1" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isEmergencyAttachedTo the EPC_A and + the UE_A entity isEmergencyRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity sends a 200_Ok containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE; + from the IMS_E_CSCF entity + } + then { + the IMS_P_CSCF_A entity sends a 200_Ok containing + From indicating value PX_UE_B_SIP_URI, + To indicating value PX_UE_A_SIP_URI, + CallId indicating value PX_UE_B_CALLID, + Via indicating value PX_UE_B_VIA, + Route indicating value PX_UE_B_SERVICE_ROUTE, + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity; + to the UE_A entity + } + } + + } // End of TP_GM_PCSCF_ECO_200OK_01 + + Test Purpose { + + TP Id TP_GM_PCSCF_ECO_200OK_BYE_02 + + Test objective "Verify that the P-CSCF successfully processes a 200 (OK) BYE (Terminating Leg)." + + Reference + "ETSI TS 124 229 [1], Clauses 5.1.5 and 6.1" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isEmergencyAttachedTo the EPC_A and + the UE_A entity isEmergencyRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a 200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE, + not PChargingVector, + not PChargingFunctionAddresses, + not PPreferredIdentity; + from the UE_A entity + } + then { + the IMS_P_CSCF_A entity sends a 200_Ok containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_UE_B_SIP_URI, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_UE_A_VIA, + Route indicating value PX_UE_A_SERVICE_ROUTE; + to the IMS_E_CSCF entity + } + } + + } // End of TP_GM_PCSCF_ECO_200OK_02 } // End of Package TP_GM diff --git a/test_purposes/Mw/TP_MW_PS.tplan2 b/test_purposes/Mw/TP_MW_PS.tplan2 index 61e74cf..45b0645 100644 --- a/test_purposes/Mw/TP_MW_PS.tplan2 +++ b/test_purposes/Mw/TP_MW_PS.tplan2 @@ -447,6 +447,106 @@ Package TP_MW_PS { } // End of TP_MW_PCSCF_ECO_480INVITE_01 + Test Purpose { + + TP Id TP_MW_PCSCF_ECO_380INVITE_01 + + Test objective "Verify that the P-CSCF rejects an initial INVITE from an emergency registered UE + if the IMS is not capable or does not handle emergency sessions." + + Reference + "ETSI TS 124 229 [1], Clause 5.2.10.5" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_E_CSCF_VIA, + Route indicating value PX_E_CSCF_SERVICE_ROUTE; + from the UE_A entity + } + then { + the IMS_P_CSCF_A entity sends a 380_AlternativeService containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_P_CSCF_A_VIA, + PAssertedIdentity, + MessageBody containing + XML containing + Version indicating value "1", + Type_child indicating value "emergency", + Reason_child, + Action_child;;; + to the UE_A entity + } + } + + } // End of TP_MW_PCSCF_ECO_380INVITE_01 + + Test Purpose { + + TP Id TP_MW_PCSCF_ECO_380INVITE_02 + + Test objective "Verify that the P-CSCF rejects an initial INVITE from an emergency registered UE + if received Request-URI is wrong - not in accordance with RFC 5031." + + Reference + "ETSI TS 124 229 [1], Clauses 5.2.10.4 and 5.2.10.5 + RFC 5031" + + Config Id CF_VoLTE_INT_ES + + PICS Selection NONE + + Initial conditions with { + the UE_A entity isAttachedTo the EPC_A and + the UE_A entity isRegisteredTo the IMS_A + } + + Expected behaviour + ensure that { + when { + the IMS_P_CSCF_A entity receives a INVITE containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_WRONG_EMERGENCY_SERVICE_URN, + CallId indicating value PX_UE_A_CALLID, + Via indicating value PX_E_CSCF_VIA, + Route indicating value PX_E_CSCF_SERVICE_ROUTE; + from the UE_A entity + } + then { + the IMS_P_CSCF_A entity sends a 380_AlternativeService containing + From indicating value PX_UE_A_SIP_URI, + To indicating value PX_SIP_EMERGENCY_SERVICE_URN, + CallId indicating value PX_UE_A_CALLID, + Content_type, + Via indicating value PX_P_CSCF_A_VIA, + PAssertedIdentity, + MessageBody containing + XML containing + Version indicating value "1", + Type_child indicating value "emergency", + Reason_child, + Action_child;;; + to the UE_A entity + } + } + + } // End of TP_MW_PCSCF_ECO_380INVITE_02 + Test Purpose { TP Id TP_MW_PCSCF_ECO_BYE_01 -- GitLab