Loading AtsImsIot/AtsImsIot_Behavior.ttcn +107 −0 Original line number Diff line number Diff line Loading @@ -922,6 +922,73 @@ group checksTC_IMS_REG_0007 { } // group group checksTC_IMS_CALL_0001F { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, {}, "TP_IMS_5097_01", "INVITE request", 0, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { var SipMessage v_sip; var PChargingVector v_PChargingVector; var template SipUrl v_scscfEutAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); var template PChargingVector vt_PChargingVector_termoid := mw_PChargingVector({ {id := "term-oid", paramValue := *}, * }); var template PChargingVector vt_PChargingVector_accessnetinfo := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := *}, * }); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_01_mw(v_scscfEutAUrl))}, {}, "TP_IMS_5097_01", "INVITE request", 0, true ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_PChargingVector := v_sip.request.msgHeader.pChargingVector; // Check PChargingVector not containing term-oid, not containing access-network-charging-info if (match(v_PChargingVector, vt_PChargingVector_termoid)) { f_setIotVerdictFAIL("TP_IMS_5097_01"); } if (match(v_PChargingVector, vt_PChargingVector_accessnetinfo)) { f_setIotVerdictFAIL("TP_IMS_5097_01"); } } //function } // group group checksTC_IMS_SS_0001 { /** * @desc Starts monitor component behavior Loading Loading @@ -983,6 +1050,46 @@ group checksTC_IMS_SS_0001 { p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5308_02_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5308_02_mw)}, {}, "TP_IMS_5308_02", "INVITE request", 0, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5308_02_as( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5308_02_as)}, {}, "TP_IMS_5308_02", "INVITE request", 0, false ) ); p_monitorCompRef.done; } Loading AtsImsIot/AtsImsIot_Templates.ttcn +55 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,32 @@ module AtsImsIot_Templates { } } /** * @desc INVITE Request checking TP_IMS_5097_01 */ template INVITE_Request mdw_TP_IMS_5097_01_mw (template SipUrl p_scscfEutAUri) modifies mw_INVITE_Request_Base := { msgHeader := { route := omit, via := { fieldName := VIA_E, viaBody := ? // superset(mw_ViaBody_interface(p_pcscfEutAUri.hostPort)) // to be checked outside template }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_scscfEutAUri), *} }, pPreferredID := omit, pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_scscfEutAUri)), pChargingVector := mw_PChargingVector({ // checks outisde template not term-ioi, not access-info {id := "icid-value", paramValue := *}, {id := "orig-ioi", paramValue := *}, * }) } } /** * * @desc INVITE Request checking TP_IMS_5310_01 on MW Loading Loading @@ -259,6 +285,35 @@ module AtsImsIot_Templates { } } /** * * @desc INVITE Request checking TP_IMS_5308_02 on MW */ template INVITE_Request mdw_TP_IMS_5308_02_mw modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := *}, * }) } } /** * * @desc INVITE Request checking TP_IMS_5308_02 on AS */ template INVITE_Request mdw_TP_IMS_5308_02_as modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := *}, * }) } } /** * Loading AtsImsIot/AtsImsIot_TestCases.ttcn +49 −2 Original line number Diff line number Diff line Loading @@ -414,6 +414,46 @@ module AtsImsIot_TestCases { } /** * @desc Default SIP URI * @see TS 186 011-2 V2.3.1 cause 4.5.3.1.1.2 */ testcase TC_IMS_CALL_0001F() runs on ImsTestCoordinator system IotSystemInterface { // create components var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var ImsInterfaceMonitor v_mw := f_cf_create_monitor(c_mw); var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); // map/connect component ports f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_monitor_up(v_gmA); f_cf_monitor_up(v_mw); // preamble f_mtc_userTriggerRegistration(v_ueA, v_userInfoA); f_mtc_userTriggerRegistration(v_ueB, v_userInfoB); // test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); f_mtc_check_TP_IMS_5097_01_gm(v_gmA); // Check1 f_mtc_check_TP_IMS_5097_01_mw(v_mw); // Check1 // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); } /** * @desc Supplementary Service HOLD with AS * @see TS 186 011-2 V2.3.1 cause 4.5.5.1 Loading Loading @@ -443,7 +483,14 @@ module AtsImsIot_TestCases { f_mtc_userInitiateCall (v_ueA, v_userInfoB); f_mtc_check_TP_IMS_5310_01_gm(v_gmA); // Check1 f_mtc_check_TP_IMS_5310_01_mw(v_mw); // Check1 f_mtc_check_TP_IMS_5310_01_as(v_mw); // Check1 f_mtc_check_TP_IMS_5310_01_as(v_asB); // Check1 f_mtc_check_TP_IMS_5308_02_mw(v_mw); // Check2 f_mtc_check_TP_IMS_5308_02_as(v_asB); // Check2 // Check3 is not correctly described // TODO Verify user B is informed of incoming call, Verify user A is informed that UE_B is ringing // postamble f_PO_user_home_deregistration(v_ueA); Loading Loading
AtsImsIot/AtsImsIot_Behavior.ttcn +107 −0 Original line number Diff line number Diff line Loading @@ -922,6 +922,73 @@ group checksTC_IMS_REG_0007 { } // group group checksTC_IMS_CALL_0001F { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, {}, "TP_IMS_5097_01", "INVITE request", 0, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { var SipMessage v_sip; var PChargingVector v_PChargingVector; var template SipUrl v_scscfEutAUrl := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_A)); var template PChargingVector vt_PChargingVector_termoid := mw_PChargingVector({ {id := "term-oid", paramValue := *}, * }); var template PChargingVector vt_PChargingVector_accessnetinfo := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := *}, * }); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_01_mw(v_scscfEutAUrl))}, {}, "TP_IMS_5097_01", "INVITE request", 0, true ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_PChargingVector := v_sip.request.msgHeader.pChargingVector; // Check PChargingVector not containing term-oid, not containing access-network-charging-info if (match(v_PChargingVector, vt_PChargingVector_termoid)) { f_setIotVerdictFAIL("TP_IMS_5097_01"); } if (match(v_PChargingVector, vt_PChargingVector_accessnetinfo)) { f_setIotVerdictFAIL("TP_IMS_5097_01"); } } //function } // group group checksTC_IMS_SS_0001 { /** * @desc Starts monitor component behavior Loading Loading @@ -983,6 +1050,46 @@ group checksTC_IMS_SS_0001 { p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5308_02_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5308_02_mw)}, {}, "TP_IMS_5308_02", "INVITE request", 0, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5308_02_as( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5308_02_as)}, {}, "TP_IMS_5308_02", "INVITE request", 0, false ) ); p_monitorCompRef.done; } Loading
AtsImsIot/AtsImsIot_Templates.ttcn +55 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,32 @@ module AtsImsIot_Templates { } } /** * @desc INVITE Request checking TP_IMS_5097_01 */ template INVITE_Request mdw_TP_IMS_5097_01_mw (template SipUrl p_scscfEutAUri) modifies mw_INVITE_Request_Base := { msgHeader := { route := omit, via := { fieldName := VIA_E, viaBody := ? // superset(mw_ViaBody_interface(p_pcscfEutAUri.hostPort)) // to be checked outside template }, recordRoute := { fieldName := RECORD_ROUTE_E, routeBody := {mw_routeBody(p_scscfEutAUri), *} }, pPreferredID := omit, pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_scscfEutAUri)), pChargingVector := mw_PChargingVector({ // checks outisde template not term-ioi, not access-info {id := "icid-value", paramValue := *}, {id := "orig-ioi", paramValue := *}, * }) } } /** * * @desc INVITE Request checking TP_IMS_5310_01 on MW Loading Loading @@ -259,6 +285,35 @@ module AtsImsIot_Templates { } } /** * * @desc INVITE Request checking TP_IMS_5308_02 on MW */ template INVITE_Request mdw_TP_IMS_5308_02_mw modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := *}, * }) } } /** * * @desc INVITE Request checking TP_IMS_5308_02 on AS */ template INVITE_Request mdw_TP_IMS_5308_02_as modifies mw_INVITE_Request_Base := { msgHeader := { pChargingVector := mw_PChargingVector({ {id := "access-network-charging-info", paramValue := *}, * }) } } /** * Loading
AtsImsIot/AtsImsIot_TestCases.ttcn +49 −2 Original line number Diff line number Diff line Loading @@ -414,6 +414,46 @@ module AtsImsIot_TestCases { } /** * @desc Default SIP URI * @see TS 186 011-2 V2.3.1 cause 4.5.3.1.1.2 */ testcase TC_IMS_CALL_0001F() runs on ImsTestCoordinator system IotSystemInterface { // create components var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser(c_userUE_A); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var ImsInterfaceMonitor v_mw := f_cf_create_monitor(c_mw); var ImsUserInfo v_userInfoA := f_getAnyValidUser(PX_EUT_A); var ImsUserInfo v_userInfoB := f_getAnyValidUser(PX_EUT_B); // map/connect component ports f_cf_user_up(v_ueA); f_cf_user_up(v_ueB); f_cf_monitor_up(v_gmA); f_cf_monitor_up(v_mw); // preamble f_mtc_userTriggerRegistration(v_ueA, v_userInfoA); f_mtc_userTriggerRegistration(v_ueB, v_userInfoB); // test body f_mtc_userInitiateCall (v_ueA, v_userInfoB); f_mtc_check_TP_IMS_5097_01_gm(v_gmA); // Check1 f_mtc_check_TP_IMS_5097_01_mw(v_mw); // Check1 // postamble f_PO_user_home_deregistration(v_ueA); f_PO_user_home_deregistration(v_ueB); //unmap/disconnet component ports f_cf_user_down(v_ueA); f_cf_user_down(v_ueB); } /** * @desc Supplementary Service HOLD with AS * @see TS 186 011-2 V2.3.1 cause 4.5.5.1 Loading Loading @@ -443,7 +483,14 @@ module AtsImsIot_TestCases { f_mtc_userInitiateCall (v_ueA, v_userInfoB); f_mtc_check_TP_IMS_5310_01_gm(v_gmA); // Check1 f_mtc_check_TP_IMS_5310_01_mw(v_mw); // Check1 f_mtc_check_TP_IMS_5310_01_as(v_mw); // Check1 f_mtc_check_TP_IMS_5310_01_as(v_asB); // Check1 f_mtc_check_TP_IMS_5308_02_mw(v_mw); // Check2 f_mtc_check_TP_IMS_5308_02_as(v_asB); // Check2 // Check3 is not correctly described // TODO Verify user B is informed of incoming call, Verify user A is informed that UE_B is ringing // postamble f_PO_user_home_deregistration(v_ueA); Loading