Loading ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +80 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,9 @@ module AtsImsIot_Behavior { m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, mw_contentType }; import from DiameterS6a_Templates all; import from DiameterS6a_PIXITS all; import from DiameterGx_Templates all; // LibDiameter import from LibDiameter_Templates all; // import from DiameterRx_Templates all; Loading Loading @@ -3939,6 +3942,83 @@ group checksTC_IMS_SHARE_0009 { }//end group checksTC_IMS_SHARE_0009 group checksTC_VxLTE_INT_ATT_01 { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_S6A_MME_ULR_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED ?, //vc_originHost_IUT, // containing an Origin-Host AVP ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP ?, //vc_destinationRealm, // containing a Destination-Realm AVP m_userName(PX_USR_NAME), // containing a User-Name AVP DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP ?, // containing a ULR-Flags AVP with S6a-indicator bit set m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP )) } , "TP_S6A_MME_ULR_01", true ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_S6A_HSS_ULA_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED ?, //vc_originHost_IUT, // containing an Origin-Host AVP ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set mw_subscriptionData_dummy // containing a Subscription-Data AVP ) ) } , "TP_S6A_MME_ULA_01", true ) ); p_monitorCompRef.done; } //function*/ /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_GX_PCRF_CCA_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, ?, //vc_originHost, ?, //vc_originRealm, ?, //vc_destinationRealm, mw_cC_Request_Type(INITIAL_REQUEST_E), *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) ); p_monitorCompRef.start ( f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) ); p_monitorCompRef.done; } //function*/ }//end group checksTC_VxLTE_INT_ATT_01 group messagingChecks { /** * @desc Starts monitor component behavior for TP_IMS_5097_05 Loading ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn 0 → 100644 +82 −0 Original line number Diff line number Diff line /** * @author STF 574 * @version $Id: $ * @desc This module provides ATS specific test case definitions for Network Attachment. * @see ETSI TS 103 653-2 (2020) */ module AtsImsIot_TestCases_ATT { // LibCommon // LibSip // LibIms import from LibIms_UpperTester { type ImsUserInfo }; // 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 }; // LibImsIot import from AtsImsIot_Functions { function f_getImUser }; // ImsIot import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; import from AtsImsIot_Functions all; import from AtsImsIot_Behavior { group epcChecks; function f_mtc_check_response_mx, f_mtc_check_TP_IMS_5011_01_gm; group checksTC_VxLTE_INT_ATT_01 }; group networkAttachmentAndDefaultBearer { /** * @desc Initial Network Attachment and Establishment of the Default Bearer. * On successful initial network attachment, the UE should discover the P-CSCF IP address. * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1 */ testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { var CF_ATT v_config; var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); v_config.gmA := f_cf_create_monitor ( c_gm_A ); v_config.gmB := f_cf_create_monitor ( c_gm_B ); v_config.mxA := f_cf_create_monitor ( c_mx_A ); v_config.rx := f_cf_create_monitor ( c_rx ); v_config.s6a := f_cf_create_monitor ( c_s6a ); v_config.gx := f_cf_create_monitor ( c_gx ); v_config.mw := f_cf_create_monitor ( c_mw ); v_config.sgi := f_cf_create_monitor ( c_sgi ); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueA ); f_cf_epc_call_rel15_up ( v_config ); // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile f_mtc_userRegistration ( v_ueB, v_userInfoB ); // test body // Check that user A can register to IMS A f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5) f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 // postamble f_PO_user_home_deregistration ( v_ueB ); f_PO_user_home_deregistration ( v_ueA ); f_mtc_userRadioEnabled ( v_ueA, false, true ); //unmap/disconnet component ports f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); f_cf_epc_call_rel15_down ( v_config ); f_cf_adapter_down ( ); } // End of TC TC_VxLTE_INT_ATT_01 } // End of group networkAttachmentAndDefaultBearer } // End of module AtsImsIot_TestCases_ATT No newline at end of file ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn +156 −2 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ module AtsImsIot_TestConfiguration { 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, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL;} import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL, CF_ATT;} import from AtsImsIot_Templates { template m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge, m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout, Loading Loading @@ -71,6 +71,10 @@ module AtsImsIot_TestConfiguration { const charstring c_mx := "Mx"; //* interface monitor name Sgi const charstring c_sgi := "Sgi"; //* interface monitor name Rx const charstring c_s6a := "S6a"; //* interface monitor name Rx const charstring c_gx := "Gx"; } group mappingFunctions { Loading Loading @@ -1233,6 +1237,156 @@ module AtsImsIot_TestConfiguration { return v_info; } group g_release15 { function f_cf_epc_call_rel15_up ( in CF_ATT p_config ) runs on ImsTestCoordinator { // Initialize the Adapter (including the TrafficCapture process). timer tc_configureGuard; var StartTrafficCaptureRsp startResult; activate(a_receiveIOTVerdict()); tc_configureGuard.start(PX_MAX_MSG_WAIT); acPort.send(m_generalConfigurationReq_offline); alt { [] acPort.receive (m_generalConfigurationRsp_success) { log("General configuration succeed."); tc_configureGuard.stop; } [] acPort.receive (m_generalConfigurationRsp_timeout) { setverdict(fail); tc_configureGuard.stop; stop; } [] acPort.receive (m_generalConfigurationRsp_error) { setverdict(fail); tc_configureGuard.stop; stop; } [] acPort.receive { log("Unknown response."); tc_configureGuard.stop; setverdict (inconc); stop; } [] tc_configureGuard.timeout { log("Timeout."); setverdict (inconc); stop; } } f_cf_monitor_up(p_config.gmA); f_cf_monitor_up(p_config.rx); f_cf_monitor_up(p_config.s6a); f_cf_monitor_up(p_config.gx); f_cf_monitor_up(p_config.mxA); f_cf_monitor_up(p_config.mw); f_cf_monitor_up(p_config.sgi); if(isvalue(p_config.gmB)) { f_cf_monitor_up(p_config.gmB); } p_config.gmA.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.gmA.done; p_config.rx.start(f_cf_setFilter( valueof (m_SetFilterReq( e_diameter, {f_getInterfaceInfo("Rx", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.rx.done; p_config.mxA.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Mx", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.mxA.done; p_config.mw.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.mw.done; p_config.sgi.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Sgi", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.sgi.done; p_config.gmB.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])} ) ))); // Start traffic capture processing. tc_configureGuard.start(PX_MAX_MSG_WAIT); acPort.send(m_startTrafficCaptureReq); alt { [] acPort.receive (m_startTrafficCaptureRsp_any) -> value startResult { tc_configureGuard.stop; if (startResult.status.code != e_success) { log("**** StartTrafficCaptureReq unsuccessfull! ****"); setverdict(fail); stop; } } [] tc_configureGuard.timeout { log("**** StartTrafficCaptureReq not answered. ****"); setverdict (inconc); stop; } } } // end of function f_cf_epc_call_rel15_up function f_cf_epc_call_rel15_down( inout CF_ATT p_config ) runs on ImsTestCoordinator { // Stop traffic capture processing. timer tc_configureGuard; var StopTrafficCaptureRsp stopResult; tc_configureGuard.start(PX_MAX_MSG_WAIT); acPort.send(m_stopTrafficCaptureReq); alt { [] acPort.receive (m_stopTrafficCaptureRsp_any) -> value stopResult { tc_configureGuard.stop; if (stopResult.status.code != e_success) { log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq unsuccessfull! ****"); setverdict(fail); } } [] tc_configureGuard.timeout { log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq not answered. ****"); setverdict (inconc); } } f_cf_monitor_down(p_config.gmA); f_cf_monitor_down(p_config.rx); f_cf_monitor_down(p_config.s6a); f_cf_monitor_down(p_config.gx); f_cf_monitor_down(p_config.mxA); f_cf_monitor_down(p_config.mw); f_cf_monitor_down(p_config.sgi); f_cf_monitor_down(p_config.gmB); } // end of function f_cf_epc_call_rel15_down } // end group g_release15 } No newline at end of file ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +14 −0 Original line number Diff line number Diff line Loading @@ -89,4 +89,18 @@ module AtsImsIot_TestSystem { ImsInterfaceMonitor sgi, ImsInterfaceMonitor gmB // See ETSI TS 103 029 V3.1.1 clause 5.4.1.1 } group g_release15 { type record CF_ATT { ImsInterfaceMonitor gmA, ImsInterfaceMonitor rx, ImsInterfaceMonitor s6a, ImsInterfaceMonitor gx, ImsInterfaceMonitor mxA, ImsInterfaceMonitor mw, ImsInterfaceMonitor sgi, ImsInterfaceMonitor gmB } } // end of g_release15 } No newline at end of file ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn 0 → 100644 +505 −0 File added.Preview size limit exceeded, changes collapsed. Show changes Loading
ttcn/AtsImsIot/AtsImsIot_Behavior.ttcn +80 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,9 @@ module AtsImsIot_Behavior { m_msrpURIs_ToPath_Dummy, m_msrpURIs_FromPath_Dummy, mw_contentType }; import from DiameterS6a_Templates all; import from DiameterS6a_PIXITS all; import from DiameterGx_Templates all; // LibDiameter import from LibDiameter_Templates all; // import from DiameterRx_Templates all; Loading Loading @@ -3939,6 +3942,83 @@ group checksTC_IMS_SHARE_0009 { }//end group checksTC_IMS_SHARE_0009 group checksTC_VxLTE_INT_ATT_01 { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_S6A_MME_ULR_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { uLR_MSG := mdw_ULR(?,mdw_ulrBodyAvps( md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED ?, //vc_originHost_IUT, // containing an Origin-Host AVP ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP ?, //vc_destinationRealm, // containing a Destination-Realm AVP m_userName(PX_USR_NAME), // containing a User-Name AVP DiameterS6a_Templates.m_rAT_Type(PX_RAT_TYPE), // containing a RAT-Type AVP ?, // containing a ULR-Flags AVP with S6a-indicator bit set m_visitedPLMNId_dummy // containing a Visited-PLMN-ID AVP )) } , "TP_S6A_MME_ULR_01", true ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_S6A_HSS_ULA_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { uLA_MSG := mdw_ULA(?,mdw_ulaBodyAvps( mw_resultCode(DIAMETER_SUCCESS_E), // containing a Result-Code AVP indicating DIAMETER_SUCCESS md_auth_Session_State_noStateMaintained, // containing an Auth-Session-State AVP indicating NO_STATE_MAINTAINED ?, //vc_originHost_IUT, // containing an Origin-Host AVP ?, //vc_originRealm_IUT, // containing an Origin-Realm AVP mdw_ula_Flags_AVP(1), // containing a ULA-Flags AVP with Separation-indicator bit set mw_subscriptionData_dummy // containing a Subscription-Data AVP ) ) } , "TP_S6A_MME_ULA_01", true ) ); p_monitorCompRef.done; } //function*/ /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_GX_PCRF_CCA_01( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_receiveDiameterMsg ( { cCR_MSG := mw_CCR_Request(?, ?, //vc_originHost, ?, //vc_originRealm, ?, //vc_destinationRealm, mw_cC_Request_Type(INITIAL_REQUEST_E), *, *, *) } , "TP_GX_PCRF_CCA_01 CCR", true ) ); p_monitorCompRef.start ( f_receiveDiameterMsg ( { cCA_MSG := mw_CCA_ResultCode(?,?,?,mw_resultCode(DIAMETER_SUCCESS_E)) } , "TP_GX_PCRF_CCA_01 CCA", true ) ); p_monitorCompRef.done; } //function*/ }//end group checksTC_VxLTE_INT_ATT_01 group messagingChecks { /** * @desc Starts monitor component behavior for TP_IMS_5097_05 Loading
ttcn/AtsImsIot/AtsImsIot_TestCases_ATT.ttcn 0 → 100644 +82 −0 Original line number Diff line number Diff line /** * @author STF 574 * @version $Id: $ * @desc This module provides ATS specific test case definitions for Network Attachment. * @see ETSI TS 103 653-2 (2020) */ module AtsImsIot_TestCases_ATT { // LibCommon // LibSip // LibIms import from LibIms_UpperTester { type ImsUserInfo }; // 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 }; // LibImsIot import from AtsImsIot_Functions { function f_getImUser }; // ImsIot import from AtsImsIot_TestConfiguration all; import from AtsImsIot_TestSystem all; import from AtsImsIot_Functions all; import from AtsImsIot_Behavior { group epcChecks; function f_mtc_check_response_mx, f_mtc_check_TP_IMS_5011_01_gm; group checksTC_VxLTE_INT_ATT_01 }; group networkAttachmentAndDefaultBearer { /** * @desc Initial Network Attachment and Establishment of the Default Bearer. * On successful initial network attachment, the UE should discover the P-CSCF IP address. * The EPC will create the Default Bearers which will allow communication only between the UE and the P-CSCF * @see TS 124 229 [2], clause 9.2.1 and L.2.2.1; TS 129 212 [9], clauses 4.5.1 (item 1) and 4a.5.1 (item 1); TS 129 272 [10], clause 5.2.1.1 */ testcase TC_VxLTE_INT_ATT_01 ( ) runs on ImsTestCoordinator system IotSystemInterface { var CF_ATT v_config; var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A ); var ImsUserInfo v_userInfoB := f_getImUser ( PX_EUT_B ); v_config.gmA := f_cf_create_monitor ( c_gm_A ); v_config.gmB := f_cf_create_monitor ( c_gm_B ); v_config.mxA := f_cf_create_monitor ( c_mx_A ); v_config.rx := f_cf_create_monitor ( c_rx ); v_config.s6a := f_cf_create_monitor ( c_s6a ); v_config.gx := f_cf_create_monitor ( c_gx ); v_config.mw := f_cf_create_monitor ( c_mw ); v_config.sgi := f_cf_create_monitor ( c_sgi ); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueA ); f_cf_epc_call_rel15_up ( v_config ); // preamble f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile f_mtc_userRegistration ( v_ueB, v_userInfoB ); // test body // Check that user A can register to IMS A f_mtc_userRegistration ( v_ueA, v_userInfoA ); // Send REGISTER request message f_mtc_check_TP_EPC_6002_01 ( v_config.gmA, false ); // Check f_mtc_check_TP_S6A_MME_ULR_01 ( v_config.s6a, false ); // Check (ULR – Event 2) f_mtc_check_TP_S6A_HSS_ULA_01 ( v_config.s6a, false ); // Check (ULA – Event 3) f_mtc_check_TP_GX_PCRF_CCA_01 ( v_config.gx, false ); // Check (CCR, CCA – Events 4, 5) f_mtc_userCheckRegistration ( v_ueA, f_getAnyValidUser ( PX_EUT_A ) ); f_mtc_check_TP_EPC_6003_01 ( v_ueA, v_config.gmA, v_ueB, v_config.gmB ); // Test sequence #4-5 // postamble f_PO_user_home_deregistration ( v_ueB ); f_PO_user_home_deregistration ( v_ueA ); f_mtc_userRadioEnabled ( v_ueA, false, true ); //unmap/disconnet component ports f_cf_user_down ( v_ueB ); f_cf_user_down ( v_ueA ); f_cf_epc_call_rel15_down ( v_config ); f_cf_adapter_down ( ); } // End of TC TC_VxLTE_INT_ATT_01 } // End of group networkAttachmentAndDefaultBearer } // End of module AtsImsIot_TestCases_ATT No newline at end of file
ttcn/AtsImsIot/AtsImsIot_TestConfiguration.ttcn +156 −2 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ module AtsImsIot_TestConfiguration { 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, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL;} import from AtsImsIot_TestSystem {type ImsInterfaceMonitor, ImsTestCoordinator, CF_INT_CALL, CF_INT_AS, CF_ROAM_AS, CF_EPC_CALL, CF_ATT;} import from AtsImsIot_Templates { template m_generalConfigurationReq_offline, m_generalConfigurationReq_online, m_generalConfigurationReq_merge, m_generalConfigurationRsp_success, m_generalConfigurationRsp_error, m_generalConfigurationRsp_timeout, Loading Loading @@ -71,6 +71,10 @@ module AtsImsIot_TestConfiguration { const charstring c_mx := "Mx"; //* interface monitor name Sgi const charstring c_sgi := "Sgi"; //* interface monitor name Rx const charstring c_s6a := "S6a"; //* interface monitor name Rx const charstring c_gx := "Gx"; } group mappingFunctions { Loading Loading @@ -1233,6 +1237,156 @@ module AtsImsIot_TestConfiguration { return v_info; } group g_release15 { function f_cf_epc_call_rel15_up ( in CF_ATT p_config ) runs on ImsTestCoordinator { // Initialize the Adapter (including the TrafficCapture process). timer tc_configureGuard; var StartTrafficCaptureRsp startResult; activate(a_receiveIOTVerdict()); tc_configureGuard.start(PX_MAX_MSG_WAIT); acPort.send(m_generalConfigurationReq_offline); alt { [] acPort.receive (m_generalConfigurationRsp_success) { log("General configuration succeed."); tc_configureGuard.stop; } [] acPort.receive (m_generalConfigurationRsp_timeout) { setverdict(fail); tc_configureGuard.stop; stop; } [] acPort.receive (m_generalConfigurationRsp_error) { setverdict(fail); tc_configureGuard.stop; stop; } [] acPort.receive { log("Unknown response."); tc_configureGuard.stop; setverdict (inconc); stop; } [] tc_configureGuard.timeout { log("Timeout."); setverdict (inconc); stop; } } f_cf_monitor_up(p_config.gmA); f_cf_monitor_up(p_config.rx); f_cf_monitor_up(p_config.s6a); f_cf_monitor_up(p_config.gx); f_cf_monitor_up(p_config.mxA); f_cf_monitor_up(p_config.mw); f_cf_monitor_up(p_config.sgi); if(isvalue(p_config.gmB)) { f_cf_monitor_up(p_config.gmB); } p_config.gmA.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.gmA.done; p_config.rx.start(f_cf_setFilter( valueof (m_SetFilterReq( e_diameter, {f_getInterfaceInfo("Rx", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.rx.done; p_config.mxA.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Mx", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.mxA.done; p_config.mw.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Mw", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.mw.done; p_config.sgi.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Sgi", PX_PRODUCTS[PX_EUT_A])} ) ))); p_config.sgi.done; p_config.gmB.start(f_cf_setFilter( valueof (m_SetFilterReq( e_sip, {f_getInterfaceInfo("Gm", PX_PRODUCTS[PX_EUT_B])} ) ))); // Start traffic capture processing. tc_configureGuard.start(PX_MAX_MSG_WAIT); acPort.send(m_startTrafficCaptureReq); alt { [] acPort.receive (m_startTrafficCaptureRsp_any) -> value startResult { tc_configureGuard.stop; if (startResult.status.code != e_success) { log("**** StartTrafficCaptureReq unsuccessfull! ****"); setverdict(fail); stop; } } [] tc_configureGuard.timeout { log("**** StartTrafficCaptureReq not answered. ****"); setverdict (inconc); stop; } } } // end of function f_cf_epc_call_rel15_up function f_cf_epc_call_rel15_down( inout CF_ATT p_config ) runs on ImsTestCoordinator { // Stop traffic capture processing. timer tc_configureGuard; var StopTrafficCaptureRsp stopResult; tc_configureGuard.start(PX_MAX_MSG_WAIT); acPort.send(m_stopTrafficCaptureReq); alt { [] acPort.receive (m_stopTrafficCaptureRsp_any) -> value stopResult { tc_configureGuard.stop; if (stopResult.status.code != e_success) { log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq unsuccessfull! ****"); setverdict(fail); } } [] tc_configureGuard.timeout { log("**** TC_IMS_MESS_0001: StopTrafficCaptureReq not answered. ****"); setverdict (inconc); } } f_cf_monitor_down(p_config.gmA); f_cf_monitor_down(p_config.rx); f_cf_monitor_down(p_config.s6a); f_cf_monitor_down(p_config.gx); f_cf_monitor_down(p_config.mxA); f_cf_monitor_down(p_config.mw); f_cf_monitor_down(p_config.sgi); f_cf_monitor_down(p_config.gmB); } // end of function f_cf_epc_call_rel15_down } // end group g_release15 } No newline at end of file
ttcn/AtsImsIot/AtsImsIot_TestSystem.ttcn +14 −0 Original line number Diff line number Diff line Loading @@ -89,4 +89,18 @@ module AtsImsIot_TestSystem { ImsInterfaceMonitor sgi, ImsInterfaceMonitor gmB // See ETSI TS 103 029 V3.1.1 clause 5.4.1.1 } group g_release15 { type record CF_ATT { ImsInterfaceMonitor gmA, ImsInterfaceMonitor rx, ImsInterfaceMonitor s6a, ImsInterfaceMonitor gx, ImsInterfaceMonitor mxA, ImsInterfaceMonitor mw, ImsInterfaceMonitor sgi, ImsInterfaceMonitor gmB } } // end of g_release15 } No newline at end of file
ttcn/AtsImsIot/DiameterGx_PIXITS.ttcn 0 → 100644 +505 −0 File added.Preview size limit exceeded, changes collapsed. Show changes