Commit e6d6ebd2 authored by poglitsch's avatar poglitsch
Browse files

new parameter for message checking added

parent 13f0323b
Loading
Loading
Loading
Loading
+142 −68
Original line number Diff line number Diff line
@@ -36,52 +36,62 @@ module AtsImsIot_Behavior {
	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.
         * @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
         *     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_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);
            f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc );
            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);

@@ -141,7 +151,8 @@ module AtsImsIot_Behavior {
			in template SipMessageList p_list,
			in verdicttype p_verdict,
			in charstring p_tpId,
			in boolean p_forwardMtc
			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;
@@ -149,11 +160,11 @@ module AtsImsIot_Behavior {
			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)
						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)
						a_receive_sipResponse(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage)
					);
				}
				v_idx := v_idx + 1;
@@ -183,10 +194,19 @@ module AtsImsIot_Behavior {
			in template Request p_message,
			in verdicttype p_verdict,
			in charstring p_tpId,
			in boolean p_forwardMtc
			in boolean p_forwardMtc,
			in boolean p_checkMessage
		) runs on ImsInterfaceMonitor {
			var Request v_message;
			[] dPort.receive(p_message) -> value 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;
@@ -208,10 +228,19 @@ module AtsImsIot_Behavior {
    		in template Response p_message,
    		in verdicttype p_verdict,
    		in charstring p_tpId,
    		in boolean p_forwardMtc
    		in boolean p_forwardMtc,
    		in boolean p_checkMessage
		) runs on ImsInterfaceMonitor {
			var Response v_message;
			[] dPort.receive(p_message) -> value 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;
@@ -243,6 +272,7 @@ group checksTC_IMS_MESS_0001{
                {mw_SipRequest(mw_MESSAGE_Request_Base(?))},
                {1, mw_SipRequest(mw_MESSAGE_Request_Base(?))},
                "TP_IMS_4002_01_gm",
                false,
                false
            )
           );
@@ -258,6 +288,7 @@ group checksTC_IMS_MESS_0001{
                {mw_SipRequest(mw_MESSAGE_Request_Base(?))},
                {0, omit},
                "TP_IMS_4002_01_mw",
                false,
                false
            )
           );
@@ -280,6 +311,7 @@ group checksTC_IMS_REG_0001 {
                {mw_SipRequest(mw_REGISTER_Request_Base)},
                {0, omit},
                "TP_IMS_5011_01",
                false,
                false
            )
           );
@@ -301,7 +333,8 @@ group checksTC_IMS_REG_0001 {
                {mw_SipRequest(mw_REGISTER_Request_Base)},
                {0, omit},
                "TP_IMS_5011_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -324,7 +357,8 @@ group checksTC_IMS_REG_0001 {
                {mw_SipRequest(mw_REGISTER_Request_Base)},
                {0, omit},
                "TP_IMS_5011_02",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -348,7 +382,8 @@ group checksTC_IMS_REG_0001 {
                {mw_SipResponse (mw_200OK_Base)},
                {0, omit},
                "TP_IMS_5092_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -372,7 +407,8 @@ group checksTC_IMS_REG_0001 {
                {mw_SipResponse (mw_401Unauthorized_Base)},
                {0, omit},
                "TP_IMS_5089_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -402,7 +438,8 @@ group checksTC_IMS_REG_0001 {
                {mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
                {0, omit},
                "TP_IMS_5044_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -434,7 +471,8 @@ group checksTC_IMS_REG_0001 {
                {},
                {0, omit},
                "TP_IMS_5096_01",
                true
                true,
                false
            )
           );
     
@@ -470,6 +508,7 @@ group checksTC_IMS_REG_0002{
                {},
                {0, omit},
                "TP_IMS_5203_01",
                false,
                false
            )
           );
@@ -494,7 +533,8 @@ group checksTC_IMS_REG_0002{
                {},
                {0, omit},
                "TP_IMS_5203_01 first register",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -508,7 +548,8 @@ group checksTC_IMS_REG_0002{
                {},
                {0, omit},
                "TP_IMS_5203_01 second register",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -536,6 +577,7 @@ group checksTC_IMS_REG_0002H{
                {},
                {0, omit},
                "TP_IMS_5203_01",
                false,
                false
            )
           );
@@ -560,7 +602,8 @@ group checksTC_IMS_REG_0002H{
                {},
                {0, omit},
                "TP_IMS_5203_01 first register",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -574,7 +617,8 @@ group checksTC_IMS_REG_0002H{
                {},
                {0, omit},
                "TP_IMS_5203_01 second register",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -611,6 +655,7 @@ group checksTC_IMS_REG_0003{
                {},
                {0, omit},
                "TP_IMS_5129_01",
                false,
                false
            )
           );
@@ -631,7 +676,8 @@ group checksTC_IMS_REG_0003{
                {},
                {1, mw_SipResponse(mw_403Forbidden_Base)}, // TODO check that
                "TP_IMS_5129_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -658,6 +704,7 @@ group checksTC_IMS_REG_0003H{
                {},
                {0, omit},
                "TP_IMS_5411_01",
                false,
                false
            )
           );
@@ -678,7 +725,8 @@ group checksTC_IMS_REG_0003H{
                {},
                {1, mw_SipResponse(mw_403Forbidden_Base)},
                "TP_IMS_5411_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -705,6 +753,7 @@ group checksTC_IMS_REG_0004 {
        			{mw_SipRequest(mw_REGISTER_Request_Base)},
        			{0, omit},
        			"TP_IMS_5088_01_gm",
        			false,
                	false
        		)
        	);
@@ -727,6 +776,7 @@ group checksTC_IMS_REG_0004 {
    						{mw_SipRequest(mw_REGISTER_Request_Base)},
    						{0, omit},
    						"TP_IMS_5088_01_mw",
    						false,
                			false
    			)
        	);
@@ -751,6 +801,7 @@ group checksTC_IMS_REG_0004 {
    				{mw_SipRequest(mw_MESSAGE_Request_Base(?))},
    				{0, omit},
    				"TP_IMS_5093_01_mw",
    				false,
                	false
    			)
    		);
@@ -773,6 +824,7 @@ group checksTC_IMS_REG_0004 {
    				{mw_SipRequest(mw_MESSAGE_Request_Base(?))},
    				{0, omit},
    				"TP_IMS_5093_01_mw",
    				false,
                	false
    			)
    		);
@@ -798,6 +850,7 @@ group checksTC_IMS_REG_0004 {
					{mw_SipRequest(mw_MESSAGE_Request_Base(?))},
					{0, omit},
					"TP_IMS_5094_01_mw",
					false,
                	false
				)
			);
@@ -820,6 +873,7 @@ group checksTC_IMS_REG_0004 {
					{mw_SipRequest(mw_MESSAGE_Request_Base(?))},
					{0, omit},
					"TP_IMS_5094_01_mw",
					false,
                	false
				)
			);
@@ -843,6 +897,7 @@ group checksTC_IMS_REG_0007 {
                {},
                {0, omit},
                "TP_IMS_5034_01",
                false,
                false
            )
           );
@@ -865,6 +920,7 @@ group checksTC_IMS_REG_0007 {
                {mw_SipRequest(mw_REGISTER_Request_Base)},
                {0, omit},
                "TP_IMS_5134_01",
                false,
                false
            )
           );
@@ -876,7 +932,8 @@ group checksTC_IMS_REG_0007 {
							{mw_SipRequest(mw_REGISTER_Request_Base)},
							{1, mw_SipResponse(mw_Response_Base(c_statusLine401, ?, ?))}, // (ignore 401 Unauthorized)
							"TP_IMS_5134_01",
							true
							true,
                			false
			)
    		);
    		p_monitorCompRef.done;  
@@ -900,7 +957,8 @@ group checksTC_IMS_REG_0007 {
                {mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
                {1, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, // ignore 200 Ok 
                "TP_IMS_5405_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -925,6 +983,7 @@ group checksTC_IMS_CALL_0001F {
                {},
                {0, omit},
                "TP_IMS_5097_01",
                false,
                false
            )
           );
@@ -956,7 +1015,8 @@ group checksTC_IMS_CALL_0001F {
            {},
            {0, omit},
            "TP_IMS_5097_01",
            true
            true,
            false
        )
       );
       p_monitorCompRef.done;
@@ -986,6 +1046,7 @@ group checksTC_IMS_CALL_0001F {
                {},
                {0, omit},
                "TP_IMS_5107_02",
                false,
                false
            )
           );
@@ -1013,7 +1074,8 @@ group checksTC_IMS_CALL_0001F {
            {},
            {0, omit},
            "TP_IMS_5107_02",
            true
            true,
            false
        )
       );
       p_monitorCompRef.done;
@@ -1046,7 +1108,8 @@ group checksTC_IMS_CALL_0001F {
                {},
                {0, omit},
                "TP_IMS_5107_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -1080,7 +1143,8 @@ group checksTC_IMS_CALL_0001F {
            {},
            {0, omit},
            "TP_IMS_5107_01",
            true
            true,
            false
        )
       );
       p_monitorCompRef.done;
@@ -1115,6 +1179,7 @@ group checksTC_IMS_SS_0001 {
                {},
                {0, omit},
                "TP_IMS_5310_01",
                false,
                false
            )
           );
@@ -1134,6 +1199,7 @@ group checksTC_IMS_SS_0001 {
                {mw_SipRequest(mw_INVITE_Request_Base)},
                {1, mw_SipRequest(mw_INVITE_Request_Base)},
                "TP_IMS_5310_01",
                false,
                false
            )
           );
@@ -1152,6 +1218,7 @@ group checksTC_IMS_SS_0001 {
                {},
                {0, omit},
                "TP_IMS_5310_01",
                false,
                false
            )
           );
@@ -1171,6 +1238,7 @@ group checksTC_IMS_SS_0001 {
                {},
                {1, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, // skip 1 200 OK
                "mdw_TP_IMS_5312_01",
                false,
                false
            )
           );
@@ -1189,6 +1257,7 @@ group checksTC_IMS_SS_0001 {
                {},
                {0, omit},
                "TP_IMS_5312_01",
                false,
                false
            )
           );
@@ -1218,6 +1287,7 @@ group checksTC_IMS_SS_0007 {
                {},
                {0, omit},
                "TP_IMS_5046_01",
                false,
                false
            )
           );
@@ -1247,7 +1317,8 @@ group checksTC_IMS_SS_0007 {
                {},
                {0, omit},
                "TP_IMS_5046_01",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;
@@ -1279,6 +1350,7 @@ group checksTC_IMS_SS_0007 {
                {},
                {0, omit}, // TODO skip parameter
                "TP_IMS_5110_01",
                false,
                false
            )
           );
@@ -1297,6 +1369,7 @@ group checksTC_IMS_SS_0007 {
                {},
                {0, omit},// TODO skip parameter
                "TP_IMS_5110_01",
                false,
                false
            )
           );
@@ -1317,7 +1390,8 @@ group checksTC_IMS_SS_0007 {
                {},
                {0, omit},
                "TP_IMS_5097_09",
                true
                true,
                false
            )
           );
           p_monitorCompRef.done;