Loading AtsImsIot/AtsImsIot_Behavior.ttcn +83 −24 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ module AtsImsIot_Behavior { import from AtsImsIot_Templates {template all;} import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, SkipType; type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } Loading @@ -28,7 +28,6 @@ module AtsImsIot_Behavior { import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; import from AtsImsIot_Functions all; import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} Loading Loading @@ -907,6 +906,7 @@ group checksTC_IMS_CALL_0001 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_04_gm(mw_TEL_URI_Base))},//TODO check TEL_URI of UE_B Loading @@ -928,9 +928,10 @@ group checksTC_IMS_CALL_0001 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_04_ic(mw_SIP_URI_Base))},//TODO check SIP_URI of UE_B {mw_SipRequest(mdw_TP_IMS_5097_04_ic(v_eutBUri))}, {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, "TP_IMS_5097_04", Loading @@ -940,6 +941,49 @@ group checksTC_IMS_CALL_0001 { ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_ENUM_01 * @param p_gm Reference to Gm monitor component * @param p_naptr Reference to NAPTR monitor component */ function f_mtc_check_TP_IMS_ENUM_01 ( ImsInterfaceMonitor p_gm, ImsInterfaceMonitor p_naptr) runs on ImsTestCoordinator { var EnumQuery v_enumQuery; var EnumResponse v_enumResponse; f_mtc_check_TP_IMS_ENUM_01_gm ( p_gm, false ); // SIP INVITE v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( p_naptr ); // ENUM query //TODO check ENUM query message as described in the spec. v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( p_naptr ); // ENUM response //TODO check ENUM response message as described in the spec. } function f_mtc_check_TP_IMS_ENUM_01_gm ( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest ( mdw_TP_IMS_5097_04_gm ( mw_TEL_URI_Base )) }, { }, { 0, omit }, "TP_IMS_ENUM_01", false, p_checkMessage ) ); p_monitorCompRef.done; } function f_mtc_check_TP_IMS_ENUM_01_enumQuery ( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return EnumQuery { var NAPTRmessage v_naptr; p_monitorCompRef.start ( f_getNaptrMsg ( p_monitorCompRef, { query := ? }, v_naptr ) ); p_monitorCompRef.done; return v_naptr.enumMessage.query; } function f_mtc_check_TP_IMS_ENUM_01_enumResponse ( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return EnumResponse { var NAPTRmessage v_naptr; p_monitorCompRef.start ( f_getNaptrMsg ( p_monitorCompRef, { response := ? }, v_naptr ) ); p_monitorCompRef.done; return v_naptr.enumMessage.response; } /** * @desc Starts monitor component behavior Loading Loading @@ -3992,9 +4036,10 @@ group checksTC_IMS_SHARE_0009 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_08_gm(*))}, {mw_SipRequest(mdw_TP_IMS_5097_08_gm(mw_TEL_URI_Base))}, {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, "TP_IMS_5097_08", Loading @@ -4014,9 +4059,10 @@ group checksTC_IMS_SHARE_0009 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_08_ic(*))}, {mw_SipRequest(mdw_TP_IMS_5097_08_ic(v_eutBUri))}, {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, "TP_IMS_5097_08", Loading Loading @@ -4805,6 +4851,19 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } function f_mtc_check_options ( ImsInterfaceMonitor p_monitorCompRef, charstring p_rcsCap ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest( mw_OPTIONS_Request ( p_rcsCap ) ) }, { }, { 0, omit }, "f_mtc_check_options", false, false ) ); p_monitorCompRef.done; } function f_mtc_check_response ( ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine, charstring p_rcsCap ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipResponse ( mw_Response ( p_statusLine, p_rcsCap ) ) }, { }, { 0, omit },"f_mtc_check_response", false, false ) ); p_monitorCompRef.done; } function f_mtc_check_response_mx( ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine Loading AtsImsIot/AtsImsIot_Functions.ttcn +74 −33 Original line number Diff line number Diff line Loading @@ -5,31 +5,17 @@ */ module AtsImsIot_Functions { import from AtsImsIot_Templates {template mw_SIP_URI_Base;} import from AtsImsIot_Templates { template mw_EnumQuery_Base, mw_EnumResponse_Base, mw_SIP_URI_Base; } import from AtsImsIot_TestSystem all; import from LibSip_SIPTypesAndValues all; import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } import from LibIot_Functions { function f_setConformanceVerdict; } import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, SkipType; } import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType; } import from LibIms_UpperTester all; import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } import from LibUpperTester all; import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } import from LibIot_Functions { function f_getE2EVerdict; } import from LibIot_TypesAndValues { type DefaultList; } group ue { Loading Loading @@ -538,8 +524,6 @@ module AtsImsIot_Functions { return v_status; } /** * @desc Starts user component behaviour for registration from test coordinator * @param p_userCompRef Reference to IMS UE user component Loading Loading @@ -683,6 +667,22 @@ module AtsImsIot_Functions { return v_success; } /** * @desc Trigger UE given by p_ueRef to send SIP OPTIONS message * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command * otherwise false */ function f_mtc_triggerUserOptions ( EquipmentUser p_userCompRef, EquipmentCommand p_command ) runs on ImsTestCoordinator return boolean { var boolean v_success := false; p_userCompRef.start ( f_sendEquipmentCmd ( valueof ( m_EQ_Request ( p_command, { } ) ) ) ); p_userCompRef.done; if ( f_getE2EVerdict() == pass ) { v_success := true; } return v_success; } /** * @desc Trigger UE given by p_ueRef to publishes presence information * @param p_userCompRef Reference to IMS UE user component Loading Loading @@ -2388,6 +2388,47 @@ module AtsImsIot_Functions { } } group naptrComponent { /** * @desc * This function waits for a given NAPTR message. * @param p_monitor Reference of NAPTR component * @param p_msg The NAPTR message */ function f_getNaptrMsg ( InterfaceMonitor p_monitor, in template (present) EnumMessage p_enum, out template (present) NAPTRmessage p_msg ) runs on ImsInterfaceMonitor { timer t_local := PX_MAX_MSG_WAIT; var boolean v_loop := true; t_local.start; while ( v_loop ) { alt { [] naptrPort.receive ( mw_EnumQuery_Base ) -> value p_msg { if ( match ( p_enum, p_msg.enumMessage )) { t_local.stop; setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***"); break; } t_local.start; } [] naptrPort.receive ( mw_EnumResponse_Base ) -> value p_msg { if ( match ( p_enum, p_msg.enumMessage )) { t_local.stop; setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***"); break; } t_local.start; } [] t_local.timeout { setverdict(fail, self, "***f_getNaptrMsg: expected NAPTR message not received***"); break; } [] naptrPort.receive { t_local.start; } } } } } group interComponent { /** Loading AtsImsIot/AtsImsIot_Templates.ttcn +66 −17 Original line number Diff line number Diff line Loading @@ -7,9 +7,7 @@ module AtsImsIot_Templates { import from LibCommon_BasicTypesAndValues {type UInt16;} import from LibCommon_VerdictControl {type FncRetCode;} import from LibIot_TypesAndValues { type InterfaceInfoList, Loading @@ -26,11 +24,9 @@ module AtsImsIot_Templates { Status; } import from AtsImsIot_TypesAndValues {type SipMessage;} import from AtsImsIot_TypesAndValues {type NAPTRmessage;} import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; import from LibIot_PIXITS { modulepar PX_IOT_TIMESTAMP_OFFSET, Loading @@ -49,12 +45,11 @@ module AtsImsIot_Templates { interfaceInfos := p_iterfaces } template SetFilterRsp mw_SetFilterRsp(template Status p_status) := { template SetFilterRsp mw_SetFilterRsp(in template (present) Status p_status) := { status := p_status } } group sipTemplates { /** Loading @@ -74,6 +69,59 @@ module AtsImsIot_Templates { } }//end group group naptrTemplates { template NAPTRmessage mw_EnumQuery_Base := { enumMessage := { query := { e164TelNumber := ? } } } template NAPTRmessage mw_EnumResponse_Base := { enumMessage := { response := { ttl := ?, naptrType := 35, sipUri := ?, naptrRegexp := ? } } } } group rcseTemplates { template OPTIONS_Request mw_OPTIONS_Request ( charstring p_rcseTags ) := { requestLine := { method := OPTIONS_E, requestUri := ?, sipVersion := c_sipNameVersion }, msgHeader := mw_msgHeader_Options ( p_rcseTags ), messageBody := *, payload := * } template Response mw_Response ( template StatusLine p_statusLine, charstring p_rcseTags ) := { statusLine := p_statusLine, msgHeader := mw_msgHeader_Options ( p_rcseTags ), messageBody := *, payload := * } template MessageHeader mw_msgHeader_Options ( charstring p_rcseTags ) modifies mw_msgHeader_dummy := { acceptContact := { fieldName := ACCEPT_CONTACT_E, acValues := superset ( mw_Rcse_Tags ( p_rcseTags ) ) } } template AcRcValue mw_Rcse_Tags ( charstring p_rcseTags ) := { wildcard := c_WILDCARD, acRcParams := superset ( mw_User_Caps ( p_rcseTags )) } template GenericParam mw_User_Caps ( charstring p_rcseTags ) := { id := ?, paramValue := p_rcseTags } } group modifiedSIPBaseTemplates { /** Loading Loading @@ -644,10 +692,12 @@ module AtsImsIot_Templates { /** * @desc INVITE Request checking TP_IMS_5097_04 */ template INVITE_Request mdw_TP_IMS_5097_04_ic(template SipUrl p_requestUri) template INVITE_Request mdw_TP_IMS_5097_04_ic(in template (present) SipUrl p_requestUri) modifies mw_INVITE_Request_Base := { requestLine := { requestUri := p_requestUri method := INVITE_E, requestUri := p_requestUri, sipVersion := c_sipNameVersion }, msgHeader := { pChargingVector := { Loading @@ -666,13 +716,13 @@ module AtsImsIot_Templates { * * @desc BYE Request checking TP_IMS_5107_01 on MW */ template BYE_Request mdw_TP_IMS_5107_01_ic(template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) template BYE_Request mdw_TP_IMS_5107_01_ic(template CallId p_callId, in template (present) SipUrl p_SCSCF_SIP_URI) modifies mw_BYE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { *, ?, complement(mw_routeBody(p_SCSCF_SIP_URI)), * } Loading Loading @@ -1536,16 +1586,15 @@ module AtsImsIot_Templates { } template MESSAGE_Request mdw_TP_IMS_5097_08_gm( template CallId p_callId template SipUrl p_requestUri ) modifies mw_MESSAGE_Request_Base := { requestLine := { requestUri := mw_TEL_URI_Base } requestLine := { requestUri := p_requestUri } } template MESSAGE_Request mdw_TP_IMS_5097_08_ic( template CallId p_callId template SipUrl p_requestUri ) modifies mw_MESSAGE_Request_Base := { requestLine := { requestUri := mw_SIP_URI_Base requestLine := { requestUri := p_requestUri }, msgHeader := { pChargingVector := { Loading AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn 0 → 100644 +66 −0 Original line number Diff line number Diff line /** * @author STF 435 * @version $Id: $ * @desc This module provides ATS specific ENUM test case. */ module AtsImsIot_TestCases_ENUM { import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B; } import from LibIms_UpperTester { type ImsUserInfo; } import from LibSip_SIPTypesAndValues { const c_statusLine100, c_statusLine180, c_statusLine200; } import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } import from LibIot_TestInterface { type IotEquipmentUser; } import from AtsImsIot_TestSystem { type CF_INT_CALL, ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } import from AtsImsIot_TestConfiguration { const all; function all; } import from AtsImsIot_Functions { function all; } import from AtsImsIot_Behavior { function all; } /** * @desc ENUM query should result in return of NAPTR with correct SIP URI */ testcase TD_IMS_ENUM_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { var CF_INT_CALL v_config; var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); var ImsUserInfo v_userTelInfoB := f_getTelUserId ( PX_EUT_B ); var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); // create components v_config.gmA := f_cf_create_monitor ( c_gm_A ); v_config.gmB := f_cf_create_monitor ( c_gm_B ); v_config.ici := f_cf_create_monitor ( c_ic ); v_config.mxA := f_cf_create_monitor ( c_mx_A ); v_config.mxB := f_cf_create_monitor ( c_mx_B ); v_config.naptr := f_cf_create_monitor ( c_naptr ); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_int_call_up ( v_config ); // preamble f_mtc_userRegistration ( v_ueA, v_userInfoA ); f_mtc_userRegistration ( v_ueB, v_userInfoB ); // test body f_mtc_userInitiateCall ( v_ueA, v_userTelInfoB ); // UE A invite UE B by using Tel number // check 1 (INVITE + ENUM db exchange) f_mtc_check_TP_IMS_ENUM_01 ( v_config.gmA, v_config.naptr ); // check 2 (INVITE arrived at gmB) f_mtc_check_TP_IMS_5097_01_gm ( v_config.gmB, false ); // postamble f_PO_user_home_deregistration ( v_ueA ); f_PO_user_home_deregistration ( v_ueB ); f_cf_int_call_down ( v_config ); //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_user_down ( v_ueB ); f_cf_adapter_down ( ); } } No newline at end of file AtsImsIot/AtsImsIot_TestCases_MESS.ttcn +13 −28 Original line number Diff line number Diff line Loading @@ -6,36 +6,18 @@ module AtsImsIot_TestCases_MESS { import from AtsImsIot_Behavior {function all;} import from AtsImsIot_Functions {function all;} import from LibSip_SIPTypesAndValues {const c_statusLine200;} import from LibCommon_VerdictControl {type FncRetCode;} import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} import from LibIms_UpperTester {type ImsUserInfo;} import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } import from AtsImsIot_TestConfiguration { const all; function all; } import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } import from AtsImsIot_TestConfiguration { const all; function all; } import from LibIot_TestInterface { type IotEquipmentUser; } import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } import from AtsImsIot_TestSystem { type CF_INT_CALL; } import from AtsImsIot_Templates all; import from AtsImsIot_TypesAndValues { type NAPTRmessage, EnumResponse, EnumQuery; } /** * @desc Loading Loading @@ -205,6 +187,8 @@ module AtsImsIot_TestCases_MESS { */ testcase TC_IMS_MESS_0004() runs on ImsTestCoordinator system IotSystemInterface { // create components var EnumQuery v_enumQuery; var EnumResponse v_enumResponse; 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); Loading @@ -213,6 +197,7 @@ module AtsImsIot_TestCases_MESS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB}; v_config.naptr := f_cf_create_monitor ( c_naptr ); // map/connect component ports f_cf_adapter_up(); Loading @@ -228,12 +213,14 @@ module AtsImsIot_TestCases_MESS { f_mtc_userSendMessage(v_ueA, "test"); f_mtc_check_TP_IMS_5097_08_gm(v_gmA, false); v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( v_config.naptr ); // ENUM query //TODO check ENUM query message as described in the spec. v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( v_config.naptr ); // ENUM response //TODO check ENUM response message as described in the spec. f_mtc_check_message_mx(v_mxA); f_mtc_check_TP_IMS_5097_08_ic(v_ic, false); f_mtc_check_message_mx(v_mxB); // TODO add DNS checks f_mtc_userCheckMessageReceipt(v_ueB); f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false); Loading @@ -252,8 +239,6 @@ module AtsImsIot_TestCases_MESS { f_cf_adapter_down(); } /** * @desc * IMS network handles messaging while roaming correctly. Loading Loading
AtsImsIot/AtsImsIot_Behavior.ttcn +83 −24 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ module AtsImsIot_Behavior { import from AtsImsIot_Templates {template all;} import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, SkipType; type SipMessage, SipMessageList, NAPTRmessage, EnumResponse, EnumQuery, SkipType; } Loading @@ -28,7 +28,6 @@ module AtsImsIot_Behavior { import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; import from AtsImsIot_Functions all; import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} Loading Loading @@ -907,6 +906,7 @@ group checksTC_IMS_CALL_0001 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_04_gm(mw_TEL_URI_Base))},//TODO check TEL_URI of UE_B Loading @@ -928,9 +928,10 @@ group checksTC_IMS_CALL_0001 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_04_ic(mw_SIP_URI_Base))},//TODO check SIP_URI of UE_B {mw_SipRequest(mdw_TP_IMS_5097_04_ic(v_eutBUri))}, {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, "TP_IMS_5097_04", Loading @@ -940,6 +941,49 @@ group checksTC_IMS_CALL_0001 { ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_ENUM_01 * @param p_gm Reference to Gm monitor component * @param p_naptr Reference to NAPTR monitor component */ function f_mtc_check_TP_IMS_ENUM_01 ( ImsInterfaceMonitor p_gm, ImsInterfaceMonitor p_naptr) runs on ImsTestCoordinator { var EnumQuery v_enumQuery; var EnumResponse v_enumResponse; f_mtc_check_TP_IMS_ENUM_01_gm ( p_gm, false ); // SIP INVITE v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( p_naptr ); // ENUM query //TODO check ENUM query message as described in the spec. v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( p_naptr ); // ENUM response //TODO check ENUM response message as described in the spec. } function f_mtc_check_TP_IMS_ENUM_01_gm ( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest ( mdw_TP_IMS_5097_04_gm ( mw_TEL_URI_Base )) }, { }, { 0, omit }, "TP_IMS_ENUM_01", false, p_checkMessage ) ); p_monitorCompRef.done; } function f_mtc_check_TP_IMS_ENUM_01_enumQuery ( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return EnumQuery { var NAPTRmessage v_naptr; p_monitorCompRef.start ( f_getNaptrMsg ( p_monitorCompRef, { query := ? }, v_naptr ) ); p_monitorCompRef.done; return v_naptr.enumMessage.query; } function f_mtc_check_TP_IMS_ENUM_01_enumResponse ( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return EnumResponse { var NAPTRmessage v_naptr; p_monitorCompRef.start ( f_getNaptrMsg ( p_monitorCompRef, { response := ? }, v_naptr ) ); p_monitorCompRef.done; return v_naptr.enumMessage.response; } /** * @desc Starts monitor component behavior Loading Loading @@ -3992,9 +4036,10 @@ group checksTC_IMS_SHARE_0009 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var ImsUserInfo v_userTelInfoB := f_getTelUserId(PX_EUT_B); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_08_gm(*))}, {mw_SipRequest(mdw_TP_IMS_5097_08_gm(mw_TEL_URI_Base))}, {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, "TP_IMS_5097_08", Loading @@ -4014,9 +4059,10 @@ group checksTC_IMS_SHARE_0009 { ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_08_ic(*))}, {mw_SipRequest(mdw_TP_IMS_5097_08_ic(v_eutBUri))}, {mw_SipRequest(mw_MESSAGE_Request_Base)}, {0, omit}, "TP_IMS_5097_08", Loading Loading @@ -4805,6 +4851,19 @@ group checksTC_IMS_SHARE_0009 { p_monitorCompRef.done; } function f_mtc_check_options ( ImsInterfaceMonitor p_monitorCompRef, charstring p_rcsCap ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipRequest( mw_OPTIONS_Request ( p_rcsCap ) ) }, { }, { 0, omit }, "f_mtc_check_options", false, false ) ); p_monitorCompRef.done; } function f_mtc_check_response ( ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine, charstring p_rcsCap ) runs on ImsTestCoordinator { p_monitorCompRef.start ( f_imsIot_receive ( { mw_SipResponse ( mw_Response ( p_statusLine, p_rcsCap ) ) }, { }, { 0, omit },"f_mtc_check_response", false, false ) ); p_monitorCompRef.done; } function f_mtc_check_response_mx( ImsInterfaceMonitor p_monitorCompRef, template StatusLine p_statusLine Loading
AtsImsIot/AtsImsIot_Functions.ttcn +74 −33 Original line number Diff line number Diff line Loading @@ -5,31 +5,17 @@ */ module AtsImsIot_Functions { import from AtsImsIot_Templates {template mw_SIP_URI_Base;} import from AtsImsIot_Templates { template mw_EnumQuery_Base, mw_EnumResponse_Base, mw_SIP_URI_Base; } import from AtsImsIot_TestSystem all; import from LibSip_SIPTypesAndValues all; import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } import from AtsImsIot_TestSystem { type ImsTestCoordinator, ImsInterfaceMonitor; } import from LibIot_PIXITS { modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS, PX_AVAILABLE_INTERFACES; } import from LibIot_Functions { function f_setConformanceVerdict; } import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, SkipType; } import from LibIot_Functions { function f_setConformanceVerdict, f_sendEquipmentCmd; } import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, NAPTRmessage, EnumMessage, SkipType; } import from LibIms_UpperTester all; import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } import from LibUpperTester all; import from LibIot_TestInterface { type InterfaceMonitor, TestCoordinator, EquipmentUser; } import from LibIot_Functions { function f_getE2EVerdict; } import from LibIot_TypesAndValues { type DefaultList; } group ue { Loading Loading @@ -538,8 +524,6 @@ module AtsImsIot_Functions { return v_status; } /** * @desc Starts user component behaviour for registration from test coordinator * @param p_userCompRef Reference to IMS UE user component Loading Loading @@ -683,6 +667,22 @@ module AtsImsIot_Functions { return v_success; } /** * @desc Trigger UE given by p_ueRef to send SIP OPTIONS message * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command * otherwise false */ function f_mtc_triggerUserOptions ( EquipmentUser p_userCompRef, EquipmentCommand p_command ) runs on ImsTestCoordinator return boolean { var boolean v_success := false; p_userCompRef.start ( f_sendEquipmentCmd ( valueof ( m_EQ_Request ( p_command, { } ) ) ) ); p_userCompRef.done; if ( f_getE2EVerdict() == pass ) { v_success := true; } return v_success; } /** * @desc Trigger UE given by p_ueRef to publishes presence information * @param p_userCompRef Reference to IMS UE user component Loading Loading @@ -2388,6 +2388,47 @@ module AtsImsIot_Functions { } } group naptrComponent { /** * @desc * This function waits for a given NAPTR message. * @param p_monitor Reference of NAPTR component * @param p_msg The NAPTR message */ function f_getNaptrMsg ( InterfaceMonitor p_monitor, in template (present) EnumMessage p_enum, out template (present) NAPTRmessage p_msg ) runs on ImsInterfaceMonitor { timer t_local := PX_MAX_MSG_WAIT; var boolean v_loop := true; t_local.start; while ( v_loop ) { alt { [] naptrPort.receive ( mw_EnumQuery_Base ) -> value p_msg { if ( match ( p_enum, p_msg.enumMessage )) { t_local.stop; setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***"); break; } t_local.start; } [] naptrPort.receive ( mw_EnumResponse_Base ) -> value p_msg { if ( match ( p_enum, p_msg.enumMessage )) { t_local.stop; setverdict(pass, self, "***f_getNaptrMsg: expected NAPTR message received***"); break; } t_local.start; } [] t_local.timeout { setverdict(fail, self, "***f_getNaptrMsg: expected NAPTR message not received***"); break; } [] naptrPort.receive { t_local.start; } } } } } group interComponent { /** Loading
AtsImsIot/AtsImsIot_Templates.ttcn +66 −17 Original line number Diff line number Diff line Loading @@ -7,9 +7,7 @@ module AtsImsIot_Templates { import from LibCommon_BasicTypesAndValues {type UInt16;} import from LibCommon_VerdictControl {type FncRetCode;} import from LibIot_TypesAndValues { type InterfaceInfoList, Loading @@ -26,11 +24,9 @@ module AtsImsIot_Templates { Status; } import from AtsImsIot_TypesAndValues {type SipMessage;} import from AtsImsIot_TypesAndValues {type NAPTRmessage;} import from LibSip_SIPTypesAndValues all; import from LibSip_Templates all; import from LibIot_PIXITS { modulepar PX_IOT_TIMESTAMP_OFFSET, Loading @@ -49,12 +45,11 @@ module AtsImsIot_Templates { interfaceInfos := p_iterfaces } template SetFilterRsp mw_SetFilterRsp(template Status p_status) := { template SetFilterRsp mw_SetFilterRsp(in template (present) Status p_status) := { status := p_status } } group sipTemplates { /** Loading @@ -74,6 +69,59 @@ module AtsImsIot_Templates { } }//end group group naptrTemplates { template NAPTRmessage mw_EnumQuery_Base := { enumMessage := { query := { e164TelNumber := ? } } } template NAPTRmessage mw_EnumResponse_Base := { enumMessage := { response := { ttl := ?, naptrType := 35, sipUri := ?, naptrRegexp := ? } } } } group rcseTemplates { template OPTIONS_Request mw_OPTIONS_Request ( charstring p_rcseTags ) := { requestLine := { method := OPTIONS_E, requestUri := ?, sipVersion := c_sipNameVersion }, msgHeader := mw_msgHeader_Options ( p_rcseTags ), messageBody := *, payload := * } template Response mw_Response ( template StatusLine p_statusLine, charstring p_rcseTags ) := { statusLine := p_statusLine, msgHeader := mw_msgHeader_Options ( p_rcseTags ), messageBody := *, payload := * } template MessageHeader mw_msgHeader_Options ( charstring p_rcseTags ) modifies mw_msgHeader_dummy := { acceptContact := { fieldName := ACCEPT_CONTACT_E, acValues := superset ( mw_Rcse_Tags ( p_rcseTags ) ) } } template AcRcValue mw_Rcse_Tags ( charstring p_rcseTags ) := { wildcard := c_WILDCARD, acRcParams := superset ( mw_User_Caps ( p_rcseTags )) } template GenericParam mw_User_Caps ( charstring p_rcseTags ) := { id := ?, paramValue := p_rcseTags } } group modifiedSIPBaseTemplates { /** Loading Loading @@ -644,10 +692,12 @@ module AtsImsIot_Templates { /** * @desc INVITE Request checking TP_IMS_5097_04 */ template INVITE_Request mdw_TP_IMS_5097_04_ic(template SipUrl p_requestUri) template INVITE_Request mdw_TP_IMS_5097_04_ic(in template (present) SipUrl p_requestUri) modifies mw_INVITE_Request_Base := { requestLine := { requestUri := p_requestUri method := INVITE_E, requestUri := p_requestUri, sipVersion := c_sipNameVersion }, msgHeader := { pChargingVector := { Loading @@ -666,13 +716,13 @@ module AtsImsIot_Templates { * * @desc BYE Request checking TP_IMS_5107_01 on MW */ template BYE_Request mdw_TP_IMS_5107_01_ic(template CallId p_callId, template SipUrl p_SCSCF_SIP_URI) template BYE_Request mdw_TP_IMS_5107_01_ic(template CallId p_callId, in template (present) SipUrl p_SCSCF_SIP_URI) modifies mw_BYE_Request_Base := { msgHeader := { route := { fieldName := ROUTE_E, routeBody := { *, ?, complement(mw_routeBody(p_SCSCF_SIP_URI)), * } Loading Loading @@ -1536,16 +1586,15 @@ module AtsImsIot_Templates { } template MESSAGE_Request mdw_TP_IMS_5097_08_gm( template CallId p_callId template SipUrl p_requestUri ) modifies mw_MESSAGE_Request_Base := { requestLine := { requestUri := mw_TEL_URI_Base } requestLine := { requestUri := p_requestUri } } template MESSAGE_Request mdw_TP_IMS_5097_08_ic( template CallId p_callId template SipUrl p_requestUri ) modifies mw_MESSAGE_Request_Base := { requestLine := { requestUri := mw_SIP_URI_Base requestLine := { requestUri := p_requestUri }, msgHeader := { pChargingVector := { Loading
AtsImsIot/AtsImsIot_TestCases_ENUM.ttcn 0 → 100644 +66 −0 Original line number Diff line number Diff line /** * @author STF 435 * @version $Id: $ * @desc This module provides ATS specific ENUM test case. */ module AtsImsIot_TestCases_ENUM { import from LibIot_PIXITS { modulepar PX_EUT_A, PX_EUT_B; } import from LibIms_UpperTester { type ImsUserInfo; } import from LibSip_SIPTypesAndValues { const c_statusLine100, c_statusLine180, c_statusLine200; } import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } import from LibIot_TestInterface { type IotEquipmentUser; } import from AtsImsIot_TestSystem { type CF_INT_CALL, ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } import from AtsImsIot_TestConfiguration { const all; function all; } import from AtsImsIot_Functions { function all; } import from AtsImsIot_Behavior { function all; } /** * @desc ENUM query should result in return of NAPTR with correct SIP URI */ testcase TD_IMS_ENUM_0001 ( ) runs on ImsTestCoordinator system IotSystemInterface { var CF_INT_CALL v_config; var ImsUserInfo v_userInfoA := f_getSipUserId ( PX_EUT_A ); var ImsUserInfo v_userInfoB := f_getSipUserId ( PX_EUT_B ); var ImsUserInfo v_userTelInfoB := f_getTelUserId ( PX_EUT_B ); var IotEquipmentUser v_ueA := f_cf_create_IotEquipmentUser ( c_userUE_A ); var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser ( c_userUE_B ); // create components v_config.gmA := f_cf_create_monitor ( c_gm_A ); v_config.gmB := f_cf_create_monitor ( c_gm_B ); v_config.ici := f_cf_create_monitor ( c_ic ); v_config.mxA := f_cf_create_monitor ( c_mx_A ); v_config.mxB := f_cf_create_monitor ( c_mx_B ); v_config.naptr := f_cf_create_monitor ( c_naptr ); // map/connect component ports f_cf_adapter_up ( ); f_cf_user_up ( v_ueA ); f_cf_user_up ( v_ueB ); f_cf_int_call_up ( v_config ); // preamble f_mtc_userRegistration ( v_ueA, v_userInfoA ); f_mtc_userRegistration ( v_ueB, v_userInfoB ); // test body f_mtc_userInitiateCall ( v_ueA, v_userTelInfoB ); // UE A invite UE B by using Tel number // check 1 (INVITE + ENUM db exchange) f_mtc_check_TP_IMS_ENUM_01 ( v_config.gmA, v_config.naptr ); // check 2 (INVITE arrived at gmB) f_mtc_check_TP_IMS_5097_01_gm ( v_config.gmB, false ); // postamble f_PO_user_home_deregistration ( v_ueA ); f_PO_user_home_deregistration ( v_ueB ); f_cf_int_call_down ( v_config ); //unmap/disconnet component ports f_cf_user_down ( v_ueA ); f_cf_user_down ( v_ueB ); f_cf_adapter_down ( ); } } No newline at end of file
AtsImsIot/AtsImsIot_TestCases_MESS.ttcn +13 −28 Original line number Diff line number Diff line Loading @@ -6,36 +6,18 @@ module AtsImsIot_TestCases_MESS { import from AtsImsIot_Behavior {function all;} import from AtsImsIot_Functions {function all;} import from LibSip_SIPTypesAndValues {const c_statusLine200;} import from LibCommon_VerdictControl {type FncRetCode;} import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;} import from LibIms_UpperTester {type ImsUserInfo;} import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } import from AtsImsIot_TestConfiguration { const all; function all; } import from LibIot_TestConfiguration { function f_cf_create_IotEquipmentUser; } import from AtsImsIot_TestConfiguration { const all; function all; } import from LibIot_TestInterface { type IotEquipmentUser; } import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator, IotSystemInterface; } import from AtsImsIot_TestSystem { type CF_INT_CALL; } import from AtsImsIot_Templates all; import from AtsImsIot_TypesAndValues { type NAPTRmessage, EnumResponse, EnumQuery; } /** * @desc Loading Loading @@ -205,6 +187,8 @@ module AtsImsIot_TestCases_MESS { */ testcase TC_IMS_MESS_0004() runs on ImsTestCoordinator system IotSystemInterface { // create components var EnumQuery v_enumQuery; var EnumResponse v_enumResponse; 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); Loading @@ -213,6 +197,7 @@ module AtsImsIot_TestCases_MESS { var ImsInterfaceMonitor v_mxA := f_cf_create_monitor(c_mx_A); var ImsInterfaceMonitor v_mxB := f_cf_create_monitor(c_mx_B); var CF_INT_CALL v_config := {v_gmA, v_mxA, v_ic, v_mxB, v_gmB}; v_config.naptr := f_cf_create_monitor ( c_naptr ); // map/connect component ports f_cf_adapter_up(); Loading @@ -228,12 +213,14 @@ module AtsImsIot_TestCases_MESS { f_mtc_userSendMessage(v_ueA, "test"); f_mtc_check_TP_IMS_5097_08_gm(v_gmA, false); v_enumQuery := f_mtc_check_TP_IMS_ENUM_01_enumQuery ( v_config.naptr ); // ENUM query //TODO check ENUM query message as described in the spec. v_enumResponse := f_mtc_check_TP_IMS_ENUM_01_enumResponse ( v_config.naptr ); // ENUM response //TODO check ENUM response message as described in the spec. f_mtc_check_message_mx(v_mxA); f_mtc_check_TP_IMS_5097_08_ic(v_ic, false); f_mtc_check_message_mx(v_mxB); // TODO add DNS checks f_mtc_userCheckMessageReceipt(v_ueB); f_mtc_check_TP_IMS_5117_06_gm(v_gmB, false); Loading @@ -252,8 +239,6 @@ module AtsImsIot_TestCases_MESS { f_cf_adapter_down(); } /** * @desc * IMS network handles messaging while roaming correctly. Loading