/**
* @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