/** * @author STF 370 * @version $Id: $ * @desc This module provides common functions which describes behavior for each TP reference. */ module AtsImsIot_Behavior { import from AtsImsIot_TestSystem { type ImsInterfaceMonitor, ImsTestCoordinator; } import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} import from AtsImsIot_Templates {template all;} import from AtsImsIot_TypesAndValues { type SipMessage, SipMessageList, SkipType; } import from LibIms_UpperTester {type ImsUserInfo;} import from LibIot_TypesAndValues {type DefaultList;} import from LibIot_Functions { function f_setConformanceVerdict, f_setIotVerdictFAIL; } 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;} //TODO move group to Function module group general_td_functions { /** * @desc * Generic function for reading and verifying messages on the * interface associated to the ImsInterfaceMonitor instance. This * functions works as follows: First, messages are skipped according * to the p_skip template. The p_skip template contains a message * template and a counter indicating the number of received messages * matching the message template to be skipped. If not enough * messages matching the message template arrive at the interface, * the function fails after timout. Next, messages are consumed from * the interface and matched against the p_passCriteria template * list and the p_failCriteria template list. The function * terminates with pass if a message is received matching a * pass-template and terminates with fail if a fail-template * matches. Matching against pass-templates occurs bevor matching * agains fail-templates. If neither pass-templates nor * fail-templates match, then the functions continues reading from * the interface until a match arises, or timeout. The timeout value * is given by PX_MAX_MSG_WAIT [5.0 seconds, FFS]. Finally, if * p_forwardMtc is set to true, the last received message is stored * to be fetched and used later by the main test component. Some * special use cases: - Set p_skip.skipCounter to 0 to avoid * skipping, i.e. no skippin - Set p_skip.skipCounter to 0 and * p_skip.skipMessage to ? to skip exactly one message of any type * will be skipped. - If the list of fail-templates is empty, then * the function will wait for the first message maching a * pass-message, or fail after timeout. * @param p_passCriteria list of message templates which lead to pass * @param p_failCriteria list of message templates which lead to fail * @param p_skip * Indicate how many messages from a specific sip template should be * skipped prior to checking * @param p_tpId The Test Purpose identifier * @param p_forwardMtc * indicate if the received Sip message should be forwarded to the * mtc * @param p_checkMessage * indicate if the incomming message should only be checked * (port.check) or consumed (port.receive). The check operation * allows read access to the top element of incoming port queues * without removing the top element from the queue. */ function f_imsIot_receive( in template SipMessageList p_passCriteria, in template SipMessageList p_failCriteria, in template SkipType p_skip, in charstring p_tpId, in boolean p_forwardMtc, in boolean p_checkMessage ) runs on ImsInterfaceMonitor { var integer v_size := sizeof(valueof(p_failCriteria)); var DefaultList v_defaultArray; v_defaultArray[0] := activate(a_default(p_tpId)); f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage); f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage); f_gen_receive(p_tpId, p_skip); for (var integer i := 0; i < sizeof(v_defaultArray); i := i + 1) { deactivate(v_defaultArray[i]); } } /** * @desc This function implements skipping of messages as well as timeout handling. * Prior to calling this function the message to be cheked for should be added * as defaults. * This function is independent of a specific interface component. * @param p_tpId The Test Purpose identifier * @param p_skipCount Indicate how many messages should be skipped prior to checking */ function f_gen_receive( in charstring p_tpId, in template SkipType p_skip ) runs on ImsInterfaceMonitor { var integer skipCount := valueof(p_skip.skipCount); tc_wait.start; alt { // preamble (consume prior messages) [skipCount > 0 and ischosen(p_skip.skipMessage.request)] dPort.receive (p_skip.skipMessage.request) { skipCount := skipCount - 1; log("***f_gen_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); repeat; } [skipCount > 0 and ischosen(p_skip.skipMessage.response)] dPort.receive (p_skip.skipMessage.response) { skipCount := skipCount - 1; log("***f_gen_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****"); repeat; } [] tc_wait.timeout { f_setConformanceVerdict(inconc, "***f_gen_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****"); } } } /** * @desc Activates for each entry in a expected IMS SIP message list a default * for receiving that message and setting the verdict as desired * @param p_default Reference to default array where deaults are to be added * @param p_startIdx Index into default array after which references for * defaults created in this function should be added * @param p_list List of expected messages to be checked in default * @param p_verdict Verdict to be set in case the incoming message matches any of the expcted messages * @param p_tpId Test Purpose identifir */ function f_activateImsSipDefaults( inout DefaultList p_default, in integer p_startIdx, in template SipMessageList p_list, in verdicttype p_verdict, in charstring p_tpId, in boolean p_forwardMtc, in boolean p_checkMessage ) runs on ImsInterfaceMonitor { var integer v_size := sizeof(valueof((p_list))); var integer v_idx := p_startIdx; for (var integer i := 0; i < v_size; i := i + 1) { if (ischosen(p_list[i].request)) { p_default[v_idx] := activate( a_receive_sipRequest(p_list[i].request,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) ); } else { p_default[v_idx] := activate( a_receive_sipResponse(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage) ); } v_idx := v_idx + 1; } } }//end group group altsteps { altstep a_default(in charstring p_TP) runs on ImsInterfaceMonitor { [] dPort.receive { log(self, "*** a_default: Received/ignored unexpected message when waiting for message complying to " & p_TP ); repeat; } } /** * @desc This altstep add one alternative checking for a very specifc SIP request. If it matches then the conformance verdict is set to requested verdict * @param p_message The expected SIP request * @param p_verdict Verdict to be used in case of match * @param p_tpId The test purpose identifier * * @param p_forwardMtc indicates if the received request should be forwarded to mtc */ altstep a_receive_sipRequest( in template Request p_message, in verdicttype p_verdict, in charstring p_tpId, in boolean p_forwardMtc, in boolean p_checkMessage ) runs on ImsInterfaceMonitor { var Request v_message; [not p_checkMessage] dPort.receive(p_message) -> value v_message { f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); if(p_forwardMtc) { var SipMessage v_msg; v_msg.request := v_message; icpPort.send(v_msg); } } [p_checkMessage] dPort.check(receive(p_message) -> value v_message) { f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); if(p_forwardMtc) { var SipMessage v_msg; v_msg.request := v_message; icpPort.send(v_msg); } } } /** * @desc This altstep add one alternative checking for a very specifc SIP response. If it matches then the conformance verdict is set to requested verdict * @param p_message The expected SIP response * @param p_verdict Verdict to be used in case of match * @param p_tpId The test purpose identifier * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc */ altstep a_receive_sipResponse( in template Response p_message, in verdicttype p_verdict, in charstring p_tpId, in boolean p_forwardMtc, in boolean p_checkMessage ) runs on ImsInterfaceMonitor { var Response v_message; [not p_checkMessage] dPort.receive(p_message) -> value v_message { f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); if(p_forwardMtc) { var SipMessage v_msg; v_msg.response := v_message; icpPort.send(v_msg); } } [p_checkMessage] dPort.check(receive(p_message) -> value v_message) { f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***"); if(p_forwardMtc) { var SipMessage v_msg; v_msg.response := v_message; icpPort.send(v_msg); } } } }// end group group checks { group checksTC_IMS_MESS_0001{ /** * @desc * TP_IMS_4002_01 in CFW step 3 (MESSAGE)
ensure that {
* when { UE_A sends a MESSAGE to UE_B containing a Message_Body * greater than 1300 bytes }
then { IMS_B receives the MESSAGE * containing the Message_Body greater than 1300 bytes }
} */ function f_mtc_check_TP_IMS_4002_01_gm(ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_4002_01(?))},//? CallId can be checked {mw_SipRequest(mw_MESSAGE_Request_Base(?))}, {1, mw_SipRequest(mw_MESSAGE_Request_Base(?))}, "TP_IMS_4002_01_gm", false, false ) ); p_monitorCompRef.done; } function f_mtc_check_TP_IMS_4002_01_mw(ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_4002_01(?))},//? CallId can be checked {mw_SipRequest(mw_MESSAGE_Request_Base(?))}, {0, omit}, "TP_IMS_4002_01_mw", false, false ) ); p_monitorCompRef.done; } } // group group checksTC_IMS_REG_0001 { /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * on the Mw-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); p_monitorCompRef.start( f_imsIot_receive ( {}, {mw_SipRequest(mdw_TP_IMS_5011_01f_mw)}, {0, omit}, "TP_IMS_5011_01", false, true ) ); p_monitorCompRef.done; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01p_mw(v_EUT_A_Addr))}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5089_01 (gm) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5089_01_gm_when ( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5089_01_gm_when", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 (gm) * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_02_gm", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); p_monitorCompRef.start( f_imsIot_receive( {}, {mw_SipRequest(mdw_TP_IMS_5011_02f_mw)}, {0, omit}, "TP_IMS_5011_02", true, true ) ); p_monitorCompRef.done; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02p_mw(v_EUT_A_Addr))}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_02", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5089_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5089_01_mw_when( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5089_01_mw_when)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5089_01 (when)", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5089_01 (then) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5089_01_mw_then( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5089_01_mw)}, {mw_SipResponse (mw_401Unauthorized_Base)}, {0, omit}, "TP_IMS_5089_01", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 (gm) * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5092_01_gm", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw_when( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5092_01_mw_when)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5092_01 (when)", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, "TP_IMS_5092_01", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5044_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5044_01_mw_when( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return Response { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, "TP_IMS_5044_01 (when)", true, p_checkMessage ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } /** * @desc Starts monitor component behavior for TP_IMS_5044_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5044_01_mw( ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); var SipMessage v_sip; var charstring v_Epires200OK; var charstring v_EpiresSubscribe; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5044_01_mw(?, v_eutAUri, v_UEB_PublicId))}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {0, omit}, "TP_IMS_5044_01", true, p_checkMessage ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); // Check that the expires header is set to "a value greater than the one // in the Expires_header of the 200_response" v_Epires200OK := p_200OK.msgHeader.expires.deltaSec; v_EpiresSubscribe := v_sip.request.msgHeader.expires.deltaSec; if (char2int(v_EpiresSubscribe) > char2int(v_Epires200OK)) { f_setIotVerdictFAIL("TP_IMS_5044_01 - Expires_header of subscribe is NOT greater than the Expires_header of 200_response."); } } /** * @desc Starts monitor component behavior for TP_IMS_5096_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5096_01_mw_when( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return Request { var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5096_01_mw_when)}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {0, omit}, "TP_IMS_5096_01 (when)", true, p_checkMessage ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } /** * @desc Starts monitor component behavior for TP_IMS_5096_01 */ function f_mtc_check_TP_IMS_5096_01_mw( ImsInterfaceMonitor p_monitorCompRef, Request p_Subscribe, boolean p_checkMessage ) runs on ImsTestCoordinator { var SipMessage v_sip; var charstring v_Epires200OK; var charstring v_EpiresSubscribe; p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base), mw_SipResponse(mw_202Accepted_Base)}, {}, {0, omit}, "TP_IMS_5096_01", true, p_checkMessage ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); // Check that the message contains "Expires_header indicating the same or // lower expiry time than specified in the initial SUBSCRIBE" v_Epires200OK := v_sip.response.msgHeader.expires.deltaSec; v_EpiresSubscribe := p_Subscribe.msgHeader.expires.deltaSec; if (char2int(v_Epires200OK) <= char2int(v_EpiresSubscribe)) { f_setIotVerdictFAIL("TP_IMS_5096_01 - - Expires_header Expires_header of 200_response is NOT the same or lower than the Expires_header of subscribe."); } } } // group group checksTC_IMS_REG_0002{ /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5203_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { // Check that the UE sends any register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5203_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5203_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Request { var SipMessage v_sip; //Get first Register //var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A); var Request v_RegisterStep4, v_RegisterStep2; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5203_01 first register", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_RegisterStep2 := v_sip.request; //Get second Register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5203_01 second register", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); // TODO: Currently we don't check anything, just that IMS-A sent 2 consecutive Registers v_RegisterStep4 := v_sip.request; return v_RegisterStep4; } } // group group checksTC_IMS_REG_0002H{ /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5402_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { // Check that the UE sends any register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5203_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5402_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Request { var SipMessage v_sip; //Get first Register //var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A); var Request v_RegisterStep4, v_RegisterStep2; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5203_01 first register", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_RegisterStep2 := v_sip.request; //Get second Register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5203_01 second register", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_RegisterStep4 := v_sip.request; // Check that IMS_A sends the original Register to // another entrypoint of IMS-B if (not (match (v_RegisterStep4.msgHeader, v_RegisterStep2.msgHeader))){ // Headers differ f_setIotVerdictFAIL("TP_IMS_5203_01"); } if (match (v_RegisterStep4.requestLine, v_RegisterStep4.requestLine)){ // IMS-A used same entrypoint f_setIotVerdictFAIL("TP_IMS_5203_01"); } return v_RegisterStep4; } } // group group checksTC_IMS_REG_0003{ /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5129_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { // Check that the UE sends any register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5129_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5129_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_403Forbidden_Base)}, {}, {1, mw_SipResponse(mw_403Forbidden_Base)}, // TODO check that "TP_IMS_5129_01", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } } // group group checksTC_IMS_REG_0003H{ /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5411_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { // Check that the UE sends any register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5411_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5411_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_403Forbidden_Base)}, {}, {1, mw_SipResponse(mw_403Forbidden_Base)}, "TP_IMS_5411_01", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } } // group group checksTC_IMS_REG_0004 { /** * @desc Starts monitor component behavior for TP_IMS_5088_01 (gm) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5088_01_gm(ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5088_01_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5088_01_gm", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5088_01 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5088_01_mw(ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { var charstring v_hostname; f_getHostname(PX_EUT_A, "pcscf", v_hostname); // needs recheck p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5088_01_mw(?, mw_SipUrl_Host(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid? {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5088_01_mw", false, false ) ); } } // group group checksTC_IMS_REG_0005{ /** * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5093_01_UE_mw(ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { var charstring v_hostname; var integer PX_UE_B := 1; // TODO this is just temporary, UE PIXIT needs to be determined f_getUEHostname(PX_UE_B, v_hostname); // TODO needs recheck, maybe in more detail with userOrTelephoneSubscriber etc p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5093_01_UE_mw(?, mw_SIP_URI(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid? {mw_SipRequest(mw_MESSAGE_Request_Base(?))}, {0, omit}, "TP_IMS_5093_01_mw", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5093_01_IMS_mw(ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { var charstring v_hostname; f_getHostname(PX_EUT_A, "pcscf", v_hostname); // needs recheck p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5093_01_IMS_mw(?, mw_SIP_URI(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid? {mw_SipRequest(mw_MESSAGE_Request_Base(?))}, {0, omit}, "TP_IMS_5093_01_mw", false, false ) ); p_monitorCompRef.done; } } // end group group checksTC_IMS_REG_0006{ /** * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5094_01_UE(ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { var charstring v_hostname; var integer PX_UE_B := 1; // TODO this is just temporary, UE PIXIT needs to be determined f_getUEHostname(PX_UE_B, v_hostname); // TODO needs recheck, maybe in more detail with userOrTelephoneSubscriber etc p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5094_01_UE(?, mw_SIP_URI(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid? {mw_SipRequest(mw_MESSAGE_Request_Base(?))}, {0, omit}, "TP_IMS_5094_01_mw", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5094_01_IMS(ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { var charstring v_hostname; f_getHostname(PX_EUT_A, "pcscf", v_hostname); // needs recheck p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5094_01_IMS_mw(?, mw_SIP_URI(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid? {mw_SipRequest(mw_MESSAGE_Request_Base(?))}, {0, omit}, "TP_IMS_5094_01_mw", false, false ) ); p_monitorCompRef.done; } } // end group group checksTC_IMS_REG_0007 { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5034_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5034_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5134_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Request { // TODO Get IBPC_SIP_URI of IMS A var charstring v_IBPC := "IBPC_SIP_URI of IMS A"; //f_GetEUTAddress(PX_EUT_A); var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5134_01_mw(v_IBPC))}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5134_01", false, false ) ); p_monitorCompRef.done; // fetch second register p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5134_01_mw(v_IBPC))}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {1, mw_SipResponse(mw_Response_Base(c_statusLine401, ?, ?))}, // (ignore 401 Unauthorized) "TP_IMS_5134_01", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5405_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Request { var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5405_01_mw)}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {1, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, // ignore 200 Ok "TP_IMS_5405_01", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } } // group group checksTC_IMS_CALL_0001 { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_01_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, {}, {0, omit}, "TP_IMS_5097_01", false, p_checkMessage ) ); 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, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_01_mw(mw_SipUrl_Host(v_EUT_A_Addr)))}, {}, {0, omit}, "TP_IMS_5097_01", true, p_checkMessage ) ); p_monitorCompRef.done; } //function /** * @desc Starts monitor component behavior for TP_IMS_5097_02 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_02_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, {}, {0, omit}, "TP_IMS_5097_02", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5097_02 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_02_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_02_mw(mw_SIP_URI_Base, mw_TEL_URI_Base))}, {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, "TP_IMS_5097_02", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5097_04 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_04_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))},//TODO check TEL_URI of UE_B {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, "TP_IMS_5097_04", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5097_04 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_04_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_04_mw(mw_SIP_URI_Base))},//TODO check SIP_URI of UE_B {mw_SipRequest(mw_INVITE_Request_Base)}, {0, omit}, "TP_IMS_5097_04", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5107_02_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_ACK_Request_Base(?))}, {}, {0, omit}, "TP_IMS_5107_02", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5107_02_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5107_02_mw(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, {}, {0, omit}, "TP_IMS_5107_02", true, p_checkMessage ) ); p_monitorCompRef.done; } //function /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5107_01_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_BYE_Request_Base(?))}, {}, {0, omit}, "TP_IMS_5107_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5107_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5107_01_mw(?, mw_SipUrl_Host(v_EUT_A_Addr)))}, {}, {0, omit}, "TP_IMS_5107_01", true, p_checkMessage ) ); p_monitorCompRef.done; } //function /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5115_01_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_180Ringing_Base)}, {}, {0, omit}, "TP_IMS_5115_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5115_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5115_01_mw)}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, "TP_IMS_5115_01", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5115_02_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, "TP_IMS_5115_02", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5115_02_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5115_02_mw)}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, "TP_IMS_5115_02", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5115_03_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_180Ringing_Base)}, {}, {0, omit}, "TP_IMS_5115_03", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5115_03_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5115_03_mw(mw_SIP_URI_Base, mw_TEL_URI_Base))}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, "TP_IMS_5115_03", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5115_04_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, "TP_IMS_5115_04", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5115_04_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5115_04_mw(mw_SIP_URI_Base, mw_TEL_URI_Base))}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, "TP_IMS_5115_04", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5131_01_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_180Ringing_Base)}, {}, {0, omit}, "TP_IMS_5131_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5131_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5131_01_mw)}, {mw_SipResponse(mw_180Ringing_Base)}, {0, omit}, "TP_IMS_5131_01", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5131_02_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, "TP_IMS_5131_02", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5131_02_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5131_02_mw)}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, "TP_IMS_5131_02", true, p_checkMessage ) ); p_monitorCompRef.done; } } // group group checksTC_IMS_CALL_0001F { /*functions already used in test TC_IMS_CALL_0001 * f_mtc_check_TP_IMS_5097_01_gm * f_mtc_check_TP_IMS_5097_01_mw * f_mtc_check_TP_IMS_5107_01_gm * f_mtc_check_TP_IMS_5107_01_mw * f_mtc_check_TP_IMS_5107_02_gm * f_mtc_check_TP_IMS_5107_02_mw * f_mtc_check_TP_IMS_5115_01_gm * f_mtc_check_TP_IMS_5115_01_mw * f_mtc_check_TP_IMS_5115_02_gm * f_mtc_check_TP_IMS_5115_02_mw * f_mtc_check_TP_IMS_5131_01_gm * f_mtc_check_TP_IMS_5131_01_mw * f_mtc_check_TP_IMS_5131_02_gm * f_mtc_check_TP_IMS_5131_02_mw * */ } // group group checksTC_IMS_SS_0001 { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5310_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, {}, {0, omit}, "TP_IMS_5310_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5310_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5310_01_mw)}, {mw_SipRequest(mw_INVITE_Request_Base)}, {1, mw_SipRequest(mw_INVITE_Request_Base)}, "TP_IMS_5310_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5310_01_isc( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5310_01_isc)}, {}, {0, omit}, "TP_IMS_5310_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5312_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5312_01_mw)}, {}, {1, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, // skip 1 200 OK "mdw_TP_IMS_5312_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5312_01_isc( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5312_01_isc)}, {}, {0, omit}, "TP_IMS_5312_01", false, false ) ); p_monitorCompRef.done; } } // group group checksTC_IMS_SS_0002 { // f_mtc_check_TP_IMS_5310_01_mw already used in test TC_IMS_SS_0001 // f_mtc_check_TP_IMS_5310_01_isc already used in test TC_IMS_SS_0001 } group checksTC_IMS_SS_0007 { /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5046_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_INVITE_Request_Base)}, {}, {0, omit}, "TP_IMS_5046_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5046_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); var SipMessage v_sip; var Route v_Route; var template Route vt_pcscfRoute := { fieldName := ROUTE_E, routeBody := {mw_routeBody(v_pcscfEutAUrl), *} }; var Via v_Via; var template Via vt_pcscfVia := { fieldName := VIA_E, viaBody := {mw_ViaBody_interface(v_pcscfEutAUrl.hostPort), *} }; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5046_01_mw(v_pcscfEutAUrl))}, {}, {0, omit}, "TP_IMS_5046_01", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); v_Route := v_sip.request.msgHeader.route; v_Via := v_sip.request.msgHeader.via; // Check Route header if (match(v_Route, vt_pcscfRoute)) { f_setIotVerdictFAIL("TP_IMS_5046_01"); } // Check Via header if (match(v_Via, vt_pcscfVia)) { } else { f_setIotVerdictFAIL("TP_IMS_5046_01"); } } /** * @desc Starts monitor component */ function f_mtc_check_TP_IMS_5110_01_isc( ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, // TODO skip parameter "TP_IMS_5110_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component */ function f_mtc_check_TP_IMS_5110_01_mw( ImsInterfaceMonitor p_monitorCompRef) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit},// TODO skip parameter "TP_IMS_5110_01", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_09_isc( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { var template SipUrl v_EutB_ASUrl := mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_09_isc(v_EutB_ASUrl))}, {}, {0, omit}, "TP_IMS_5097_09", true, false ) ); p_monitorCompRef.done; } } // group group messagingChecks { /** * @desc Starts monitor component behavior for TP_IMS_5097_05 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_05_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {}, {0, omit}, "TP_IMS_5097_05", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5097_05 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_05_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A); p_monitorCompRef.start( f_imsIot_receive( {}, { mw_SipRequest(mdw_TP_IMS_5097_05_f_mw(*, mw_SipUrl_Host(v_EUT_A_Addr))), mw_SipRequest(mw_MESSAGE_Request_Base(*)) }, {0, omit}, "TP_IMS_5097_05", false, true ) ); p_monitorCompRef.done; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_05_p_mw(*, mw_SipUrl_Host(v_EUT_A_Addr)))}, {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {0, omit}, "TP_IMS_5097_05", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5097_05 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_07_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {}, {0, omit}, "TP_IMS_5097_07", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5097_07 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_07_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_07_mw(*,mw_SIP_URI_Base, mw_TEL_URI_Base))}, {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {0, omit}, "TP_IMS_5097_07", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5097_08 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_08_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_08_gm(*))}, {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {0, omit}, "TP_IMS_5097_08", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5097_08 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5097_08_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5097_08_mw(*))}, {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {0, omit}, "TP_IMS_5097_08", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5117_02 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5117_02_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_2XX_Base)}, {}, {0, omit}, "TP_IMS_5117_02", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5117_02 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5117_02_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_TP_IMS_5117_02_mw)}, {mw_SipResponse(mdw_2XX_Base)}, {0, omit}, "TP_IMS_5117_02", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5117_06 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5117_06_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_2XX_Base)}, {}, {0, omit}, "TP_IMS_5117_06", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5117_06 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5117_06_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_TP_IMS_5117_06_mw)}, {mw_SipResponse(mdw_2XX_Base)}, {0, omit}, "TP_IMS_5117_06", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5118_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5118_01_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_200OK_Base)}, {}, {0, omit}, "TP_IMS_5118_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5118_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5118_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_TP_IMS_5118_01_mw)}, {mw_SipResponse(mw_200OK_Base)}, {0, omit}, "TP_IMS_5118_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5108_02 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5108_02_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {}, {0, omit}, "TP_IMS_5108_02", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5108_02 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5108_02_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { var template SipUrl v_SCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); var SemicolonParam_List p_paramList; var GenericParam p_param; var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5108_02a_mw(*))}, {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {0, omit}, "TP_IMS_5108_02", true, true ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); p_paramList := v_sip.request.msgHeader.pChargingVector.chargeParams; for(var integer i := 0; i < lengthof(p_paramList); i:= i+1) { if(p_paramList[i].id == "icid-value") { p_param := p_paramList[i]; } } p_monitorCompRef.start( f_imsIot_receive( {}, { mw_SipRequest(mdw_TP_IMS_5108_02b_f_mw(*)), mw_SipRequest(mw_MESSAGE_Request_Base(*)) }, {0, omit}, "TP_IMS_5108_02", false, true ) ); p_monitorCompRef.done; p_monitorCompRef.start( f_imsIot_receive( {}, { mw_SipRequest(mdw_TP_IMS_5108_02b_p_mw(*, v_SCSCF_IMS_B, p_param)), mw_SipRequest(mw_MESSAGE_Request_Base(*)) }, {0, omit}, "TP_IMS_5108_02", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5050_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5050_01_gm( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {}, {0, omit}, "TP_IMS_5050_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5050_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5050_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var template SipUrl v_PCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_B)); var template SipUrl v_UE_A := mw_SipUrl_Host(f_GetEUTPublicId(PX_EUT_A)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5050_01_mw(*, v_PCSCF_IMS_B, v_UE_A))}, {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {0, omit}, "TP_IMS_5050_01", false, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5050_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5114_02_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {}, {0, omit}, "TP_IMS_5114_02", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5050_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5114_02_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {}, {0, omit}, "TP_IMS_5114_02", false, false ) ); p_monitorCompRef.done; p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_4XX_Base)}, {}, {0, omit}, "TP_IMS_5114_02", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5108_06 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5108_06_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {}, {0, omit}, "TP_IMS_5108_06", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5108_06 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5108_06_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_MESSAGE_Request_Base(*))}, {}, {0, omit}, "TP_IMS_5108_06", false, false ) ); p_monitorCompRef.done; p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mw_404NotFound_Base)}, {}, {0, omit}, "TP_IMS_5114_02", false, false ) ); p_monitorCompRef.done; } } } // end group }// end module