source: trunk/ETSI-Testsuites/ETSI_auto_IOT/adapter/validation/AtsImsIot/AtsImsIot_Behavior.ttcn

Last change on this file was 22, checked in by rings, 14 years ago
  • Property svn:executable set to *
File size: 73.2 KB
Line 
1/**
2 *      @author         STF 370
3 *  @version    $Id: $
4 *      @desc           This module provides common functions which describes behavior for each TP reference.
5 */
6module AtsImsIot_Behavior {
7       
8        import from AtsImsIot_TestSystem {
9                type ImsInterfaceMonitor, ImsTestCoordinator;
10        }
11
12        import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;}
13
14        import from AtsImsIot_Templates {template all;}
15
16        import from AtsImsIot_TypesAndValues {
17                type SipMessage, SipMessageList, SkipType;
18        }
19               
20       
21        import from LibIms_UpperTester {type ImsUserInfo;}
22
23        import from LibIot_TypesAndValues {type DefaultList;}
24        import from LibIot_Functions {
25                function f_setConformanceVerdict, f_setIotVerdictFAIL;
26        }
27
28        import from LibSip_SIPTypesAndValues all;
29       
30        import from LibSip_Templates all;
31       
32        import from AtsImsIot_Functions all;
33        import from LibIot_PIXITS {modulepar PX_EUT_A, PX_EUT_B;}
34       
35        //TODO move group to Function module
36        group general_td_functions {
37               
38                /**
39         * @desc
40         *     Generic function for reading and verifying messages on the
41         *     interface associated to the ImsInterfaceMonitor instance. This
42         *     functions works as follows: First, messages are skipped according
43         *     to the p_skip template. The p_skip template contains a message
44         *     template and a counter indicating the number of received messages
45         *     matching the message template to be skipped. If not enough
46         *     messages matching the message template arrive at the interface,
47         *     the function fails after timout. Next, messages are consumed from
48         *     the interface and matched against the p_passCriteria template
49         *     list and the p_failCriteria template list. The function
50         *     terminates with pass if a message is received matching a
51         *     pass-template and terminates with fail if a fail-template
52         *     matches. Matching against pass-templates occurs bevor matching
53         *     agains fail-templates. If neither pass-templates nor
54         *     fail-templates match, then the functions continues reading from
55         *     the interface until a match arises, or timeout. The timeout value
56         *     is given by PX_MAX_MSG_WAIT [5.0 seconds, FFS]. Finally, if
57         *     p_forwardMtc is set to true, the last received message is stored
58         *     to be fetched and used later by the main test component. Some
59         *     special use cases: - Set p_skip.skipCounter to 0 to avoid
60         *     skipping, i.e. no skippin - Set p_skip.skipCounter to 0 and
61         *     p_skip.skipMessage to ? to skip exactly one message of any type
62         *     will be skipped. - If the list of fail-templates is empty, then
63         *     the function will wait for the first message maching a
64         *     pass-message, or fail after timeout.
65         * @param p_passCriteria list of message templates which lead to pass
66         * @param p_failCriteria list of message templates which lead to fail
67         * @param p_skip
68         *     Indicate how many messages from a specific sip template should be
69         *     skipped prior to checking
70         * @param p_tpId The Test Purpose identifier
71         * @param p_forwardMtc
72         *     indicate if the received Sip message should be forwarded to the
73         *     mtc
74         * @param p_checkMessage
75         *     indicate if the incomming message should only be checked
76         *     (port.check) or consumed (port.receive). The check operation
77         *     allows read access to the top element of incoming port queues
78         *     without removing the top element from the queue.
79         */     
80        function f_imsIot_receive(
81          in template SipMessageList p_passCriteria,
82          in template SipMessageList p_failCriteria,
83          in template SkipType p_skip,
84          in charstring p_tpId,
85          in boolean p_forwardMtc,
86          in boolean p_checkMessage
87        ) runs on ImsInterfaceMonitor {
88
89            var integer v_size := sizeof(valueof(p_failCriteria));
90            var DefaultList v_defaultArray;
91
92            v_defaultArray[0] := activate(a_default(p_tpId));
93            f_activateImsSipDefaults(v_defaultArray, 1, p_failCriteria, fail, p_tpId, p_forwardMtc, p_checkMessage);
94            f_activateImsSipDefaults(v_defaultArray, v_size + 1, p_passCriteria, pass, p_tpId, p_forwardMtc, p_checkMessage);
95
96                        f_gen_receive(p_tpId, p_skip);
97
98                        for (var integer i := 0; i < sizeof(v_defaultArray); i := i + 1) {
99                deactivate(v_defaultArray[i]);
100            }
101                }
102               
103                /**
104         * @desc This function implements skipping of messages as well as timeout handling.
105                 *       Prior to calling this function the message to be cheked for should be added
106                 *       as defaults.
107                 *       This function is independent of a specific interface component.
108         * @param p_tpId The Test Purpose identifier
109         * @param p_skipCount Indicate how many messages should be skipped prior to checking
110         */     
111        function f_gen_receive(
112          in charstring p_tpId,
113          in template SkipType p_skip
114        ) runs on ImsInterfaceMonitor {
115            var integer skipCount := valueof(p_skip.skipCount);
116                        tc_wait.start;
117           
118            alt {
119                // preamble (consume prior messages)
120                [skipCount > 0 and ischosen(p_skip.skipMessage.request)] dPort.receive (p_skip.skipMessage.request) {
121                        skipCount := skipCount - 1;
122                        log("***f_gen_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****");
123                        repeat;
124                }
125                [skipCount > 0 and ischosen(p_skip.skipMessage.response)] dPort.receive (p_skip.skipMessage.response) {
126                        skipCount := skipCount - 1;
127                        log("***f_gen_receive: Message skipped (intentionally) when checking for " & p_tpId & " at interface " & vc_interfaceName & " ****");
128                        repeat;
129                }
130                    [] tc_wait.timeout {
131                        f_setConformanceVerdict(inconc, "***f_gen_receive: Timer tc_wait expired when waiting for incoming message in " & p_tpId & " at interface " & vc_interfaceName & " ****");
132                    }
133            }
134           
135        }
136       
137                /**
138                * @desc Activates for each entry in a expected IMS SIP message list a default
139                *       for receiving that message and setting the verdict as desired
140                * @param p_default Reference to default array where deaults are to be added
141                * @param p_startIdx Index into default array after which references for
142                *                   defaults created in this function should be added
143                * @param p_list List of expected messages to be checked in default
144                * @param p_verdict Verdict to be set in case the incoming message matches
145                                   any of the expcted messages
146                * @param p_tpId Test Purpose identifir
147                */
148                function f_activateImsSipDefaults(
149                        inout DefaultList p_default,
150                        in integer p_startIdx,
151                        in template SipMessageList p_list,
152                        in verdicttype p_verdict,
153                        in charstring p_tpId,
154                        in boolean p_forwardMtc,
155                        in boolean p_checkMessage
156                ) runs on ImsInterfaceMonitor {
157                        var integer v_size := sizeof(valueof((p_list)));
158                        var integer v_idx := p_startIdx;
159
160                        for (var integer i := 0; i < v_size; i := i + 1) {
161                                if (ischosen(p_list[i].request)) {
162                                        p_default[v_idx] := activate(
163                                                a_receive_sipRequest(p_list[i].request,p_verdict, p_tpId, p_forwardMtc, p_checkMessage)
164                                        );
165                                } else {
166                                        p_default[v_idx] := activate(
167                                                a_receive_sipResponse(p_list[i].response,p_verdict, p_tpId, p_forwardMtc, p_checkMessage)
168                                        );
169                                }
170                                v_idx := v_idx + 1;
171                        }
172                }
173       
174        }//end group
175               
176        group altsteps {
177               
178                altstep a_default(in charstring p_TP) runs on ImsInterfaceMonitor {
179                        [] dPort.receive {
180                                log(self, "*** a_default: Received/ignored unexpected message when waiting for message complying to " & p_TP );
181                                repeat;
182                        }
183                }
184       
185                /**
186                * @desc This altstep add one alternative checking for a very specifc SIP request.
187                        If it matches then the conformance verdict is set to requested verdict
188                * @param p_message The expected SIP request
189                * @param p_verdict Verdict to be used in case of match
190                * @param p_tpId The test purpose identifier
191                * * @param p_forwardMtc indicates if the received request should be forwarded to mtc
192                */
193                altstep a_receive_sipRequest(
194                        in template Request p_message,
195                        in verdicttype p_verdict,
196                        in charstring p_tpId,
197                        in boolean p_forwardMtc,
198                        in boolean p_checkMessage
199                ) runs on ImsInterfaceMonitor {
200                        var Request v_message;
201                        [not p_checkMessage] dPort.receive(p_message) -> value v_message {
202                                f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***");
203                                if(p_forwardMtc) {
204                                        var SipMessage v_msg;
205                                        v_msg.request := v_message;
206                                        icpPort.send(v_msg);
207                                }
208                        }
209                        [p_checkMessage] dPort.check(receive(p_message) -> value v_message) {
210                                f_setConformanceVerdict(p_verdict, "***a_receive_sipRequest: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***");
211                                if(p_forwardMtc) {
212                                        var SipMessage v_msg;
213                                        v_msg.request := v_message;
214                                        icpPort.send(v_msg);
215                                }
216                        }
217                }
218       
219                /**
220                * @desc This altstep add one alternative checking for a very specifc SIP response.
221                        If it matches then the conformance verdict is set to requested verdict
222                * @param p_message The expected SIP response
223                * @param p_verdict Verdict to be used in case of match
224                * @param p_tpId The test purpose identifier
225                * @param p_forwardMtc indicates if the received reponse should be forwarded to mtc
226                */
227                altstep a_receive_sipResponse(
228                in template Response p_message,
229                in verdicttype p_verdict,
230                in charstring p_tpId,
231                in boolean p_forwardMtc,
232                in boolean p_checkMessage
233                ) runs on ImsInterfaceMonitor {
234                        var Response v_message;
235                        [not p_checkMessage] dPort.receive(p_message) -> value v_message {
236                                f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***");
237                                if(p_forwardMtc) {
238                                        var SipMessage v_msg;
239                                        v_msg.response := v_message;
240                                        icpPort.send(v_msg);
241                                }
242                        }
243                        [p_checkMessage] dPort.check(receive(p_message) -> value v_message) {
244                                f_setConformanceVerdict(p_verdict, "***a_receive_sipResponse: Received expected SIP request complying to " & p_tpId & " on interface " & vc_interfaceName & " ***");
245                                if(p_forwardMtc) {
246                                        var SipMessage v_msg;
247                                        v_msg.response := v_message;
248                                        icpPort.send(v_msg);
249                                }
250                        }
251                }
252       
253        }// end group
254       
255group checks {
256
257group checksTC_IMS_MESS_0001{
258               
259                 /**
260          * @desc
261          *     TP_IMS_4002_01 in CFW step 3 (MESSAGE)<br> ensure that {<br>
262          *     when { UE_A sends a MESSAGE to UE_B containing a Message_Body
263          *     greater than 1300 bytes }<br> then { IMS_B receives the MESSAGE
264          *     containing the Message_Body greater than 1300 bytes }<br> }
265          */
266            function f_mtc_check_TP_IMS_4002_01_gm(ImsInterfaceMonitor p_monitorCompRef)
267                runs on ImsTestCoordinator {
268                                       
269           p_monitorCompRef.start(
270            f_imsIot_receive(
271                {mw_SipRequest(mdw_TP_IMS_4002_01(?))},//? CallId can be checked
272                {mw_SipRequest(mw_MESSAGE_Request_Base(?))},
273                {1, mw_SipRequest(mw_MESSAGE_Request_Base(?))},
274                "TP_IMS_4002_01_gm",
275                false,
276                false
277            )
278           );
279           p_monitorCompRef.done;
280            }
281
282            function f_mtc_check_TP_IMS_4002_01_mw(ImsInterfaceMonitor p_monitorCompRef)
283                runs on ImsTestCoordinator {
284                                       
285           p_monitorCompRef.start(
286            f_imsIot_receive(
287                {mw_SipRequest(mdw_TP_IMS_4002_01(?))},//? CallId can be checked
288                {mw_SipRequest(mw_MESSAGE_Request_Base(?))},
289                {0, omit},
290                "TP_IMS_4002_01_mw",
291                false,
292                false
293            )
294           );
295           p_monitorCompRef.done;
296            }
297} // group
298
299    group checksTC_IMS_REG_0001 {           
300        /**
301         * @desc Starts monitor component behavior for TP_IMS_5011_01
302         *               the on Gm-interface
303         * @param p_monitorCompRef Reference to monitor component
304         */
305        function f_mtc_check_TP_IMS_5011_01_gm(
306                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
307        ) runs on ImsTestCoordinator {
308           
309           p_monitorCompRef.start(
310            f_imsIot_receive(
311                {mw_SipRequest(mdw_TP_IMS_5011_01_gm)},
312                {mw_SipRequest(mw_REGISTER_Request_Base)},
313                {0, omit},
314                "TP_IMS_5011_01",
315                false,
316                        p_checkMessage
317            )
318           );
319           p_monitorCompRef.done;
320        }
321       
322        /**
323         * @desc Starts monitor component behavior for TP_IMS_5011_01
324         *               on the Mw-interface
325         * @param p_monitorCompRef Reference to monitor component
326         */
327         
328        function f_mtc_check_TP_IMS_5011_01_mw(
329                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
330        ) runs on ImsTestCoordinator {
331                var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
332                p_monitorCompRef.start(
333                        f_imsIot_receive (
334                    {},
335                    {mw_SipRequest(mdw_TP_IMS_5011_01f_mw)},
336                    {0, omit},
337                    "TP_IMS_5011_01",
338                    false,
339                    true
340                        )
341                );
342                p_monitorCompRef.done;
343                   
344                p_monitorCompRef.start(
345                        f_imsIot_receive(
346                                {mw_SipRequest(mdw_TP_IMS_5011_01p_mw(v_EUT_A_Addr))},
347                                {mw_SipRequest(mw_REGISTER_Request_Base)},
348                                {0, omit},
349                                "TP_IMS_5011_01",
350                                false,
351                                p_checkMessage
352                        )
353                );
354                p_monitorCompRef.done;
355        }
356
357        /**
358        * @desc Starts monitor component behavior for TP_IMS_5089_01 (gm)
359        * @param p_monitorCompRef Reference to monitor component
360        */             
361        function f_mtc_check_TP_IMS_5089_01_gm_when (
362                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
363        ) runs on ImsTestCoordinator {
364                p_monitorCompRef.start(
365                        f_imsIot_receive(
366                                {mw_SipRequest(mw_REGISTER_Request_Base)},
367                                {},
368                                {0, omit},
369                                "TP_IMS_5089_01_gm_when",
370                                false,
371                                p_checkMessage
372                        )
373                );
374                p_monitorCompRef.done;
375        }
376
377
378        /**
379        * @desc Starts monitor component behavior for TP_IMS_5011_02 (gm)
380        *                the on Gm-interface
381        * @param p_monitorCompRef Reference to monitor component
382        */
383        function f_mtc_check_TP_IMS_5011_02_gm(
384                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
385        ) runs on ImsTestCoordinator {
386           
387                p_monitorCompRef.start(
388                        f_imsIot_receive(
389                                {mw_SipRequest(mdw_TP_IMS_5011_02_gm)},
390                                {mw_SipRequest(mw_REGISTER_Request_Base)},
391                                {0, omit},
392                                "TP_IMS_5011_02_gm",
393                                false,
394                                p_checkMessage
395                        )
396                );
397                p_monitorCompRef.done;
398        }
399
400        /**
401        * @desc Starts monitor component behavior for TP_IMS_5011_02 (mw)
402        * @param p_monitorCompRef Reference to monitor component
403        */
404        function f_mtc_check_TP_IMS_5011_02_mw(
405                        ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
406                ) runs on ImsTestCoordinator {
407                        var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);                 
408
409                        p_monitorCompRef.start(
410                                f_imsIot_receive(
411                                        {},
412                                        {mw_SipRequest(mdw_TP_IMS_5011_02f_mw)},
413                                        {0, omit},
414                                        "TP_IMS_5011_02",
415                                        true,
416                                        true
417                                )
418                        );
419                        p_monitorCompRef.done;
420
421                        p_monitorCompRef.start(
422                        f_imsIot_receive(
423                                {mw_SipRequest(mdw_TP_IMS_5011_02p_mw(v_EUT_A_Addr))},
424                                {mw_SipRequest(mw_REGISTER_Request_Base)},
425                                {0, omit},
426                                "TP_IMS_5011_02",
427                                true,
428                                p_checkMessage
429                        )
430                        );
431                        p_monitorCompRef.done;
432                }
433
434
435        /**
436        * @desc Starts monitor component behavior for TP_IMS_5089_01 (when)
437        * @param p_monitorCompRef Reference to monitor component
438        */
439        function f_mtc_check_TP_IMS_5089_01_mw_when(
440                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
441        ) runs on ImsTestCoordinator {
442                        p_monitorCompRef.start(
443                                f_imsIot_receive(
444                                        {mw_SipRequest(mdw_TP_IMS_5089_01_mw_when)},
445                                        {mw_SipRequest(mw_REGISTER_Request_Base)},
446                                        {0, omit},
447                                        "TP_IMS_5089_01 (when)",
448                                        true,
449                                        p_checkMessage
450                                )
451                        );
452                p_monitorCompRef.done;
453        }
454
455            /**
456                 * @desc Starts monitor component behavior for TP_IMS_5089_01 (then)
457                 * @param p_monitorCompRef Reference to monitor component
458                 */
459            function f_mtc_check_TP_IMS_5089_01_mw_then(
460                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
461            ) runs on ImsTestCoordinator {
462          p_monitorCompRef.start(
463            f_imsIot_receive(
464                {mw_SipResponse(mdw_TP_IMS_5089_01_mw)},
465                {mw_SipResponse (mw_401Unauthorized_Base)},
466                {0, omit},
467                "TP_IMS_5089_01",
468                true,
469                                p_checkMessage
470            )
471           );
472           p_monitorCompRef.done;
473            }
474
475
476                /**
477        * @desc Starts monitor component behavior for TP_IMS_5092_01 (gm)
478        *                the on Gm-interface
479        * @param p_monitorCompRef Reference to monitor component
480        */
481        function f_mtc_check_TP_IMS_5092_01_gm(
482                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
483        ) runs on ImsTestCoordinator {
484                p_monitorCompRef.start(
485                        f_imsIot_receive(
486                        {mw_SipRequest(mdw_TP_IMS_5011_02_gm)},
487                        {mw_SipRequest(mw_REGISTER_Request_Base)},
488                        {0, omit},
489                        "TP_IMS_5092_01_gm",
490                        false,
491                                p_checkMessage
492                        )
493                );
494                        p_monitorCompRef.done;
495        }
496
497                /**
498                * @desc Starts monitor component behavior for TP_IMS_5092_01 (when)
499                * @param p_monitorCompRef Reference to monitor component
500                */
501        function f_mtc_check_TP_IMS_5092_01_mw_when(
502                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
503        ) runs on ImsTestCoordinator {
504                p_monitorCompRef.start(
505                f_imsIot_receive(
506                        {mw_SipRequest(mdw_TP_IMS_5092_01_mw_when)},
507                        {mw_SipRequest(mw_REGISTER_Request_Base)},
508                        {0, omit},
509                        "TP_IMS_5092_01 (when)",
510                        true,
511                                p_checkMessage
512                        )
513                );
514                        p_monitorCompRef.done;
515                }
516
517                /**
518        * @desc Starts monitor component behavior for TP_IMS_5092_01
519        * @param p_monitorCompRef Reference to monitor component
520        */
521                function f_mtc_check_TP_IMS_5092_01_mw(
522                        ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
523                ) runs on ImsTestCoordinator {
524                        var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A);
525                        var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
526                       
527                p_monitorCompRef.start(
528                                f_imsIot_receive(
529                                {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_EUT_A_Addr, v_eutBUri))},
530                                {mw_SipResponse (mw_200OK_Base)},
531                                {0, omit},
532                                "TP_IMS_5092_01",
533                                true,
534                                        p_checkMessage
535                        )
536                );
537                p_monitorCompRef.done;
538                }
539
540
541                /**
542                * @desc Starts monitor component behavior for TP_IMS_5044_01 (when)
543                * @param p_monitorCompRef Reference to monitor component
544                */
545        function f_mtc_check_TP_IMS_5044_01_mw_when(
546                ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
547        ) runs on ImsTestCoordinator return Response {
548                var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
549                        var SipMessage v_sip;
550                        p_monitorCompRef.start(
551                                        f_imsIot_receive(
552                                        {mw_SipResponse(mw_200OK_Base)},
553                                        {},
554                                        {0, omit},
555                                        "TP_IMS_5044_01 (when)",
556                                        true,
557                                        p_checkMessage
558                                )
559                        );
560                        p_monitorCompRef.done;
561
562                        f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
563                        return v_sip.response;
564        }
565
566    /**
567         * @desc Starts monitor component behavior for TP_IMS_5044_01
568         * @param p_monitorCompRef Reference to monitor component
569         */
570        function f_mtc_check_TP_IMS_5044_01_mw(
571                ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage
572        ) runs on ImsTestCoordinator {
573                var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B);
574                var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));               
575                var SipMessage v_sip;
576                var charstring v_Epires200OK;
577                var charstring v_EpiresSubscribe;
578                p_monitorCompRef.start(
579                        f_imsIot_receive(
580                                {mw_SipRequest(mdw_TP_IMS_5044_01_mw(?, v_eutAUri, v_UEB_PublicId))},
581                                {mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
582                                {0, omit},
583                                "TP_IMS_5044_01",
584                                true,
585                        p_checkMessage
586                        )
587                );
588                p_monitorCompRef.done;
589   
590                f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
591                // Check that the expires header is set to "a value greater than the one
592                // in the Expires_header of the 200_response"
593                v_Epires200OK := p_200OK.msgHeader.expires.deltaSec;
594                v_EpiresSubscribe  := v_sip.request.msgHeader.expires.deltaSec;
595                if (char2int(v_EpiresSubscribe) > char2int(v_Epires200OK)) {
596                        f_setIotVerdictFAIL("TP_IMS_5044_01 - Expires_header of subscribe is NOT greater than the Expires_header of 200_response.");
597                }
598        }
599
600                /**
601        * @desc Starts monitor component behavior for TP_IMS_5096_01
602        * @param p_monitorCompRef Reference to monitor component
603        */
604                function f_mtc_check_TP_IMS_5096_01_mw_when(
605                        ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage
606                ) runs on ImsTestCoordinator  return Request {
607                var SipMessage v_sip;
608                p_monitorCompRef.start(
609                        f_imsIot_receive(
610                                {mw_SipRequest(mdw_TP_IMS_5096_01_mw_when)},
611                                {mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
612                                {0, omit},
613                                "TP_IMS_5096_01 (when)",
614                                true,
615                                        p_checkMessage
616                        )
617                );
618                p_monitorCompRef.done;
619                f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
620                return v_sip.request;
621                }
622
623
624            /**
625                 * @desc Starts monitor component behavior for TP_IMS_5096_01
626                 */
627            function f_mtc_check_TP_IMS_5096_01_mw(
628                ImsInterfaceMonitor p_monitorCompRef, Request p_Subscribe, boolean p_checkMessage
629            ) runs on ImsTestCoordinator
630            {
631                   var SipMessage v_sip;
632           var charstring v_Epires200OK;
633           var charstring v_EpiresSubscribe;
634           p_monitorCompRef.start(
635            f_imsIot_receive(
636                {mw_SipResponse(mw_200OK_Base), mw_SipResponse(mw_202Accepted_Base)},
637                {},
638                {0, omit},
639                "TP_IMS_5096_01",
640                true,
641                                p_checkMessage
642            )
643           );
644           p_monitorCompRef.done;
645                   
646           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
647           // Check that the message contains "Expires_header indicating the same or
648           // lower expiry time than specified in the initial SUBSCRIBE"
649                   v_Epires200OK := v_sip.response.msgHeader.expires.deltaSec;
650                   v_EpiresSubscribe  := p_Subscribe.msgHeader.expires.deltaSec;         
651           if (char2int(v_Epires200OK) <= char2int(v_EpiresSubscribe)) {
652                         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.");
653           }
654            }
655
656    } // group
657
658group checksTC_IMS_REG_0002{       
659            /**
660                 * @desc Starts monitor component behavior
661                 * @param p_monitorCompRef Reference to monitor component
662                 */
663            function f_mtc_check_TP_IMS_5203_01_gm(
664                ImsInterfaceMonitor p_monitorCompRef
665            ) runs on ImsTestCoordinator {
666                   // Check that the UE sends any register                     
667           p_monitorCompRef.start(
668            f_imsIot_receive(
669                {mw_SipRequest(mw_REGISTER_Request_Base)},
670                {},
671                {0, omit},
672                "TP_IMS_5203_01",
673                false,
674                false
675            )
676           );
677           p_monitorCompRef.done;
678            }
679           
680            /**
681                 * @desc Starts monitor component behavior
682                 * @param p_monitorCompRef Reference to monitor component
683                 */
684            function f_mtc_check_TP_IMS_5203_01_mw(
685                ImsInterfaceMonitor p_monitorCompRef
686            ) runs on ImsTestCoordinator return Request {
687                   var SipMessage v_sip;
688                   
689                   //Get first Register
690                   //var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A);
691                   var Request v_RegisterStep4, v_RegisterStep2;               
692           p_monitorCompRef.start(
693            f_imsIot_receive(
694                {mw_SipRequest(mw_REGISTER_Request_Base)},
695                {},
696                {0, omit},
697                "TP_IMS_5203_01 first register",
698                true,
699                false
700            )
701           );
702           p_monitorCompRef.done;
703           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
704           v_RegisterStep2 := v_sip.request;
705
706                   //Get second Register
707           p_monitorCompRef.start(
708            f_imsIot_receive(
709                {mw_SipRequest(mw_REGISTER_Request_Base)},
710                {},
711                {0, omit},
712                "TP_IMS_5203_01 second register",
713                true,
714                false
715            )
716           );
717           p_monitorCompRef.done;
718           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
719           
720           // TODO: Currently we don't check anything, just that IMS-A sent 2 consecutive Registers 
721           v_RegisterStep4 := v_sip.request;                     
722           return v_RegisterStep4;
723            }
724 
725} // group
726
727group checksTC_IMS_REG_0002H{       
728            /**
729                 * @desc Starts monitor component behavior
730                 * @param p_monitorCompRef Reference to monitor component
731                 */
732            function f_mtc_check_TP_IMS_5402_01_gm(
733                ImsInterfaceMonitor p_monitorCompRef
734            ) runs on ImsTestCoordinator {
735                   // Check that the UE sends any register                     
736           p_monitorCompRef.start(
737            f_imsIot_receive(
738                {mw_SipRequest(mw_REGISTER_Request_Base)},
739                {},
740                {0, omit},
741                "TP_IMS_5203_01",
742                false,
743                false
744            )
745           );
746           p_monitorCompRef.done;
747            }
748           
749            /**
750                 * @desc Starts monitor component behavior
751                 * @param p_monitorCompRef Reference to monitor component
752                 */
753            function f_mtc_check_TP_IMS_5402_01_mw(
754                ImsInterfaceMonitor p_monitorCompRef
755            ) runs on ImsTestCoordinator return Request {
756                   var SipMessage v_sip;
757                   
758                   //Get first Register
759                   //var charstring v_EUT_A_Addr := f_GetEUTAddress(PX_EUT_A);
760                   var Request v_RegisterStep4, v_RegisterStep2;               
761           p_monitorCompRef.start(
762            f_imsIot_receive(
763                {mw_SipRequest(mw_REGISTER_Request_Base)},
764                {},
765                {0, omit},
766                "TP_IMS_5203_01 first register",
767                true,
768                false
769            )
770           );
771           p_monitorCompRef.done;
772           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
773           v_RegisterStep2 := v_sip.request;
774
775                   //Get second Register
776           p_monitorCompRef.start(
777            f_imsIot_receive(
778                {mw_SipRequest(mw_REGISTER_Request_Base)},
779                {},
780                {0, omit},
781                "TP_IMS_5203_01 second register",
782                true,
783                false
784            )
785           );
786           p_monitorCompRef.done;
787           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
788           v_RegisterStep4 := v_sip.request;                     
789           
790           // Check that IMS_A sends the original Register to
791           // another entrypoint of IMS-B
792           if (not (match (v_RegisterStep4.msgHeader, v_RegisterStep2.msgHeader))){
793             // Headers differ
794            f_setIotVerdictFAIL("TP_IMS_5203_01");
795           }
796           if (match (v_RegisterStep4.requestLine, v_RegisterStep4.requestLine)){
797             // IMS-A used same entrypoint
798                        f_setIotVerdictFAIL("TP_IMS_5203_01");
799           } 
800           return v_RegisterStep4;
801            }
802 
803 
804} // group
805group checksTC_IMS_REG_0003{       
806            /**
807                 * @desc Starts monitor component behavior
808                 * @param p_monitorCompRef Reference to monitor component
809                 */
810            function f_mtc_check_TP_IMS_5129_01_gm(
811                ImsInterfaceMonitor p_monitorCompRef
812            ) runs on ImsTestCoordinator {
813                   // Check that the UE sends any register                     
814           p_monitorCompRef.start(
815            f_imsIot_receive(
816                {mw_SipRequest(mw_REGISTER_Request_Base)},
817                {},
818                {0, omit},
819                "TP_IMS_5129_01",
820                false,
821                false
822            )
823           );
824           p_monitorCompRef.done;
825            }
826           
827            /**
828                 * @desc Starts monitor component behavior
829                 * @param p_monitorCompRef Reference to monitor component
830                 */
831            function f_mtc_check_TP_IMS_5129_01_mw(
832                ImsInterfaceMonitor p_monitorCompRef
833            ) runs on ImsTestCoordinator return Response {
834                   var SipMessage v_sip;
835          p_monitorCompRef.start(
836            f_imsIot_receive(
837                {mw_SipResponse(mw_403Forbidden_Base)},
838                {},
839                {1, mw_SipResponse(mw_403Forbidden_Base)}, // TODO check that
840                "TP_IMS_5129_01",
841                true,
842                false
843            )
844           );
845           p_monitorCompRef.done;
846
847           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
848                   
849           return v_sip.response;
850            }
851 
852 
853} // group
854group checksTC_IMS_REG_0003H{       
855            /**
856                 * @desc Starts monitor component behavior
857                 * @param p_monitorCompRef Reference to monitor component
858                 */
859            function f_mtc_check_TP_IMS_5411_01_gm(
860                ImsInterfaceMonitor p_monitorCompRef
861            ) runs on ImsTestCoordinator {
862                   // Check that the UE sends any register                     
863           p_monitorCompRef.start(
864            f_imsIot_receive(
865                {mw_SipRequest(mw_REGISTER_Request_Base)},
866                {},
867                {0, omit},
868                "TP_IMS_5411_01",
869                false,
870                false
871            )
872           );
873           p_monitorCompRef.done;
874            }
875           
876            /**
877                 * @desc Starts monitor component behavior
878                 * @param p_monitorCompRef Reference to monitor component
879                 */
880            function f_mtc_check_TP_IMS_5411_01_mw(
881                ImsInterfaceMonitor p_monitorCompRef
882            ) runs on ImsTestCoordinator return Response {
883                   var SipMessage v_sip;
884          p_monitorCompRef.start(
885            f_imsIot_receive(
886                {mw_SipResponse(mw_403Forbidden_Base)},
887                {},
888                {1, mw_SipResponse(mw_403Forbidden_Base)},
889                "TP_IMS_5411_01",
890                true,
891                false
892            )
893           );
894           p_monitorCompRef.done;
895
896           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
897                   
898           return v_sip.response;
899            }
900 
901} // group
902
903group checksTC_IMS_REG_0004 {
904
905        /**
906        * @desc Starts monitor component behavior for TP_IMS_5088_01 (gm)
907        * @param p_monitorCompRef Reference to monitor component
908        */
909        function f_mtc_check_TP_IMS_5088_01_gm(ImsInterfaceMonitor p_monitorCompRef)
910                runs on ImsTestCoordinator {
911                       
912                p_monitorCompRef.start(
913                        f_imsIot_receive(
914                                {mw_SipRequest(mdw_TP_IMS_5088_01_gm)},
915                                {mw_SipRequest(mw_REGISTER_Request_Base)},
916                                {0, omit},
917                                "TP_IMS_5088_01_gm",
918                                false,
919                        false
920                        )
921                );
922                p_monitorCompRef.done;
923        }
924
925        /**
926        * @desc Starts monitor component behavior for TP_IMS_5088_01 (mw)
927        * @param p_monitorCompRef Reference to monitor component
928        */
929        function f_mtc_check_TP_IMS_5088_01_mw(ImsInterfaceMonitor p_monitorCompRef)
930                runs on ImsTestCoordinator {
931               
932                        var charstring v_hostname;
933                        f_getHostname(PX_EUT_A, "pcscf", v_hostname); // needs recheck 
934                       
935                p_monitorCompRef.start(
936                        f_imsIot_receive(
937                                                {mw_SipRequest(mdw_TP_IMS_5088_01_mw(?, mw_SipUrl_Host(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid?
938                                                {mw_SipRequest(mw_REGISTER_Request_Base)},
939                                                {0, omit},
940                                                "TP_IMS_5088_01_mw",
941                                                false,
942                                        false
943                        )
944                );
945        }
946        } // group
947
948        group checksTC_IMS_REG_0005{
949        /**
950        * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw)
951        * @param p_monitorCompRef Reference to monitor component
952        */
953        function f_mtc_check_TP_IMS_5093_01_UE_mw(ImsInterfaceMonitor p_monitorCompRef)
954                runs on ImsTestCoordinator {
955               
956                var charstring v_hostname;
957                var integer PX_UE_B := 1; // TODO this is just temporary, UE PIXIT needs to be determined
958                f_getUEHostname(PX_UE_B, v_hostname); // TODO needs recheck, maybe in more detail with userOrTelephoneSubscriber etc
959   
960                p_monitorCompRef.start(
961                        f_imsIot_receive(
962                                {mw_SipRequest(mdw_TP_IMS_5093_01_UE_mw(?, mw_SIP_URI(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid?
963                                {mw_SipRequest(mw_MESSAGE_Request_Base(?))},
964                                {0, omit},
965                                "TP_IMS_5093_01_mw",
966                                false,
967                        false
968                        )
969                );
970                p_monitorCompRef.done;
971        }               
972       
973                /**
974        * @desc Starts monitor component behavior for TP_IMS_5093_01 (mw)
975        * @param p_monitorCompRef Reference to monitor component
976        */
977        function f_mtc_check_TP_IMS_5093_01_IMS_mw(ImsInterfaceMonitor p_monitorCompRef)
978                runs on ImsTestCoordinator {
979               
980                var charstring v_hostname;
981                f_getHostname(PX_EUT_A, "pcscf", v_hostname); // needs recheck
982   
983                p_monitorCompRef.start(
984                        f_imsIot_receive(
985                                {mw_SipRequest(mdw_TP_IMS_5093_01_IMS_mw(?, mw_SIP_URI(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid?
986                                {mw_SipRequest(mw_MESSAGE_Request_Base(?))},
987                                {0, omit},
988                                "TP_IMS_5093_01_mw",
989                                false,
990                        false
991                        )
992                );
993                p_monitorCompRef.done;
994        }
995        } // end group
996        group checksTC_IMS_REG_0006{
997       
998                /**
999                * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw)
1000                * @param p_monitorCompRef Reference to monitor component
1001                */
1002                function f_mtc_check_TP_IMS_5094_01_UE(ImsInterfaceMonitor p_monitorCompRef)
1003                        runs on ImsTestCoordinator {
1004               
1005                        var charstring v_hostname;
1006                        var integer PX_UE_B := 1; // TODO this is just temporary, UE PIXIT needs to be determined
1007                        f_getUEHostname(PX_UE_B, v_hostname); // TODO needs recheck, maybe in more detail with userOrTelephoneSubscriber etc
1008   
1009                        p_monitorCompRef.start(
1010                                f_imsIot_receive(
1011                                        {mw_SipRequest(mdw_TP_IMS_5094_01_UE(?, mw_SIP_URI(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid?
1012                                        {mw_SipRequest(mw_MESSAGE_Request_Base(?))},
1013                                        {0, omit},
1014                                        "TP_IMS_5094_01_mw",
1015                                        false,
1016                        false
1017                                )
1018                        );
1019                        p_monitorCompRef.done;
1020                }               
1021       
1022                /**
1023                * @desc Starts monitor component behavior for TP_IMS_5094_01 (mw)
1024                * @param p_monitorCompRef Reference to monitor component
1025                */
1026                function f_mtc_check_TP_IMS_5094_01_IMS(ImsInterfaceMonitor p_monitorCompRef)
1027                        runs on ImsTestCoordinator {
1028
1029                        var charstring v_hostname;
1030                        f_getHostname(PX_EUT_A, "pcscf", v_hostname); // needs recheck
1031
1032                        p_monitorCompRef.start(
1033                                f_imsIot_receive(
1034                                        {mw_SipRequest(mdw_TP_IMS_5094_01_IMS_mw(?, mw_SIP_URI(v_hostname)))}, // TODO getHostname(PCSCF) how to hande the callid?
1035                                        {mw_SipRequest(mw_MESSAGE_Request_Base(?))},
1036                                        {0, omit},
1037                                        "TP_IMS_5094_01_mw",
1038                                        false,
1039                        false
1040                                )
1041                        );
1042                        p_monitorCompRef.done;
1043                }
1044               
1045        } // end group
1046
1047group checksTC_IMS_REG_0007 {       
1048            /**
1049                 * @desc Starts monitor component behavior
1050                 * @param p_monitorCompRef Reference to monitor component
1051                 */
1052            function f_mtc_check_TP_IMS_5034_01_gm(
1053                ImsInterfaceMonitor p_monitorCompRef
1054            ) runs on ImsTestCoordinator {
1055                                       
1056           p_monitorCompRef.start(
1057            f_imsIot_receive(
1058                {mw_SipRequest(mw_REGISTER_Request_Base)},
1059                {},
1060                {0, omit},
1061                "TP_IMS_5034_01",
1062                false,
1063                false
1064            )
1065           );
1066           p_monitorCompRef.done;
1067            }
1068           
1069            /**
1070                 * @desc Starts monitor component behavior
1071                 * @param p_monitorCompRef Reference to monitor component
1072                 */
1073            function f_mtc_check_TP_IMS_5134_01_mw(
1074                ImsInterfaceMonitor p_monitorCompRef
1075            ) runs on ImsTestCoordinator return Request {
1076            // TODO Get IBPC_SIP_URI of IMS A
1077                   var charstring v_IBPC := "IBPC_SIP_URI of IMS A"; //f_GetEUTAddress(PX_EUT_A);
1078                   var SipMessage v_sip;               
1079           p_monitorCompRef.start(
1080            f_imsIot_receive(
1081                {mw_SipRequest(mdw_TP_IMS_5134_01_mw(v_IBPC))},
1082                {mw_SipRequest(mw_REGISTER_Request_Base)},
1083                {0, omit},
1084                "TP_IMS_5134_01",
1085                false,
1086                false
1087            )
1088           );
1089           p_monitorCompRef.done;
1090           // fetch second register
1091           p_monitorCompRef.start(
1092                        f_imsIot_receive(
1093                                                        {mw_SipRequest(mdw_TP_IMS_5134_01_mw(v_IBPC))},
1094                                                        {mw_SipRequest(mw_REGISTER_Request_Base)},
1095                                                        {1, mw_SipResponse(mw_Response_Base(c_statusLine401, ?, ?))}, // (ignore 401 Unauthorized)
1096                                                        "TP_IMS_5134_01",
1097                                                        true,
1098                                        false
1099                        )
1100                );
1101                p_monitorCompRef.done; 
1102           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
1103           return v_sip.request;
1104            }
1105
1106
1107            /**
1108                 * @desc Starts monitor component behavior
1109                 * @param p_monitorCompRef Reference to monitor component
1110                 */
1111            function f_mtc_check_TP_IMS_5405_01_mw(
1112                ImsInterfaceMonitor p_monitorCompRef
1113            ) runs on ImsTestCoordinator  return Request
1114            {
1115                   var SipMessage v_sip;               
1116           p_monitorCompRef.start(
1117            f_imsIot_receive(
1118                {mw_SipRequest(mdw_TP_IMS_5405_01_mw)},
1119                {mw_SipRequest(mw_SUBSCRIBE_Request_Base)},
1120                {1, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, // ignore 200 Ok
1121                "TP_IMS_5405_01",
1122                true,
1123                false
1124            )
1125           );
1126           p_monitorCompRef.done;
1127           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
1128           return v_sip.request;
1129            }
1130} // group
1131
1132
1133group checksTC_IMS_CALL_0001 {     
1134            /**
1135                 * @desc Starts monitor component behavior
1136                 * @param p_monitorCompRef Reference to monitor component
1137                 */
1138            function f_mtc_check_TP_IMS_5097_01_gm(
1139                ImsInterfaceMonitor p_monitorCompRef,
1140                        boolean p_checkMessage
1141            ) runs on ImsTestCoordinator {
1142                                       
1143           p_monitorCompRef.start(
1144            f_imsIot_receive(
1145                {mw_SipRequest(mw_INVITE_Request_Base)},
1146                {},
1147                {0, omit},
1148                "TP_IMS_5097_01",
1149                false,
1150                                p_checkMessage
1151            )
1152           );
1153           p_monitorCompRef.done;
1154            }
1155           
1156            /**
1157                 * @desc Starts monitor component behavior
1158                 * @param p_monitorCompRef Reference to monitor component
1159                 */
1160            function f_mtc_check_TP_IMS_5097_01_mw(
1161                ImsInterfaceMonitor p_monitorCompRef,
1162                        boolean p_checkMessage
1163            ) runs on ImsTestCoordinator  {
1164                   var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
1165               p_monitorCompRef.start(
1166                f_imsIot_receive(
1167                {mw_SipRequest(mdw_TP_IMS_5097_01_mw(mw_SipUrl_Host(v_EUT_A_Addr)))},
1168                {},
1169                {0, omit},
1170                "TP_IMS_5097_01",
1171                true,
1172                                p_checkMessage
1173            )
1174           );
1175           p_monitorCompRef.done;
1176                } //function
1177           
1178            /**
1179             * @desc Starts monitor component behavior for TP_IMS_5097_02
1180                 * @param p_monitorCompRef Reference to monitor component
1181                 */
1182            function f_mtc_check_TP_IMS_5097_02_gm(
1183                ImsInterfaceMonitor p_monitorCompRef,
1184                boolean p_checkMessage
1185            ) runs on ImsTestCoordinator {
1186           p_monitorCompRef.start(
1187            f_imsIot_receive(
1188                {mw_SipRequest(mw_INVITE_Request_Base)},
1189                {},
1190                {0, omit},
1191                "TP_IMS_5097_02",
1192                false,
1193                p_checkMessage
1194            )
1195           );
1196           p_monitorCompRef.done;
1197            }
1198           
1199            /**
1200                 * @desc Starts monitor component behavior for TP_IMS_5097_02
1201                 * @param p_monitorCompRef Reference to monitor component
1202                 */
1203            function f_mtc_check_TP_IMS_5097_02_mw(
1204                ImsInterfaceMonitor p_monitorCompRef,
1205                boolean p_checkMessage
1206            ) runs on ImsTestCoordinator {
1207           p_monitorCompRef.start(
1208            f_imsIot_receive(
1209                {mw_SipRequest(mdw_TP_IMS_5097_02_mw(mw_SIP_URI_Base, mw_TEL_URI_Base))},
1210                {mw_SipRequest(mw_INVITE_Request_Base)},
1211                {0, omit},
1212                "TP_IMS_5097_02",
1213                false,
1214                p_checkMessage
1215            )
1216           );
1217           p_monitorCompRef.done;
1218            }
1219           
1220        /**
1221                  * @desc Starts monitor component behavior for TP_IMS_5097_04
1222                  * @param p_monitorCompRef Reference to monitor component
1223                  */
1224        function f_mtc_check_TP_IMS_5097_04_gm(
1225                ImsInterfaceMonitor p_monitorCompRef,
1226                boolean p_checkMessage
1227        ) runs on ImsTestCoordinator {
1228                                p_monitorCompRef.start(
1229                f_imsIot_receive(
1230                        {mw_SipRequest(mdw_TP_IMS_5097_04_gm(mw_TEL_URI_Base))},//TODO check TEL_URI of UE_B
1231                        {mw_SipRequest(mw_INVITE_Request_Base)},
1232                        {0, omit},
1233                        "TP_IMS_5097_04",
1234                        false,
1235                        p_checkMessage
1236                        )
1237                );
1238                p_monitorCompRef.done;
1239        }
1240           
1241                /**
1242          * @desc Starts monitor component behavior for TP_IMS_5097_04
1243          * @param p_monitorCompRef Reference to monitor component
1244                  */
1245                function f_mtc_check_TP_IMS_5097_04_mw(
1246                        ImsInterfaceMonitor p_monitorCompRef,
1247                        boolean p_checkMessage
1248                ) runs on ImsTestCoordinator {
1249                   p_monitorCompRef.start(
1250                        f_imsIot_receive(
1251                                {mw_SipRequest(mdw_TP_IMS_5097_04_mw(mw_SIP_URI_Base))},//TODO check SIP_URI of UE_B
1252                                {mw_SipRequest(mw_INVITE_Request_Base)},
1253                                {0, omit},
1254                                "TP_IMS_5097_04",
1255                                false,
1256                                p_checkMessage
1257                                )
1258                        );
1259                        p_monitorCompRef.done;
1260                }
1261
1262            /**
1263                 * @desc Starts monitor component behavior
1264                 * @param p_monitorCompRef Reference to monitor component
1265                 */
1266            function f_mtc_check_TP_IMS_5107_02_gm(
1267                ImsInterfaceMonitor p_monitorCompRef,
1268                        boolean p_checkMessage
1269            ) runs on ImsTestCoordinator {
1270                                       
1271           p_monitorCompRef.start(
1272            f_imsIot_receive(
1273                {mw_SipRequest(mw_ACK_Request_Base(?))},
1274                {},
1275                {0, omit},
1276                "TP_IMS_5107_02",
1277                false,
1278                                p_checkMessage
1279            )
1280           );
1281           p_monitorCompRef.done;
1282            }
1283
1284            /**
1285                 * @desc Starts monitor component behavior
1286                 * @param p_monitorCompRef Reference to monitor component
1287                 */
1288            function f_mtc_check_TP_IMS_5107_02_mw(
1289                ImsInterfaceMonitor p_monitorCompRef,
1290                        boolean p_checkMessage
1291            ) runs on ImsTestCoordinator  {
1292            var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
1293                   
1294        p_monitorCompRef.start(
1295         f_imsIot_receive(
1296            {mw_SipRequest(mdw_TP_IMS_5107_02_mw(?, mw_SipUrl_Host(v_EUT_A_Addr)))},
1297            {},
1298            {0, omit},
1299            "TP_IMS_5107_02",
1300            true,
1301                        p_checkMessage
1302         )
1303        );
1304       p_monitorCompRef.done;
1305           } //function
1306
1307            /**
1308                 * @desc Starts monitor component behavior
1309                 * @param p_monitorCompRef Reference to monitor component
1310                 */
1311            function f_mtc_check_TP_IMS_5107_01_gm(
1312                ImsInterfaceMonitor p_monitorCompRef,
1313                        boolean p_checkMessage
1314            ) runs on ImsTestCoordinator {
1315                                       
1316           p_monitorCompRef.start(
1317            f_imsIot_receive(
1318                {mw_SipRequest(mw_BYE_Request_Base(?))},
1319                {},
1320                {0, omit},
1321                "TP_IMS_5107_01",
1322                false,
1323                                p_checkMessage
1324            )
1325           );
1326           p_monitorCompRef.done;
1327            }
1328
1329
1330            /**
1331                 * @desc Starts monitor component behavior
1332                 * @param p_monitorCompRef Reference to monitor component
1333                 */
1334            function f_mtc_check_TP_IMS_5107_01_mw(
1335                ImsInterfaceMonitor p_monitorCompRef,
1336                        boolean p_checkMessage
1337            ) runs on ImsTestCoordinator  {     
1338                var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
1339           
1340        p_monitorCompRef.start(
1341         f_imsIot_receive(
1342            {mw_SipRequest(mdw_TP_IMS_5107_01_mw(?, mw_SipUrl_Host(v_EUT_A_Addr)))},
1343            {},
1344            {0, omit},
1345            "TP_IMS_5107_01",
1346            true,
1347                        p_checkMessage
1348         )
1349        );
1350        p_monitorCompRef.done;
1351           } //function
1352               
1353        /**
1354          * @desc Starts monitor component behavior
1355          * @param p_monitorCompRef Reference to monitor component
1356          */
1357            function f_mtc_check_TP_IMS_5115_01_gm(
1358                ImsInterfaceMonitor p_monitorCompRef,
1359                        boolean p_checkMessage
1360                ) runs on ImsTestCoordinator {
1361                                       
1362           p_monitorCompRef.start(
1363            f_imsIot_receive(
1364                {mw_SipResponse(mw_180Ringing_Base)},
1365                {},
1366                {0, omit},
1367                "TP_IMS_5115_01",
1368                false,
1369                                p_checkMessage
1370            )
1371           );
1372           p_monitorCompRef.done;
1373            }
1374           
1375                /**
1376                  * @desc Starts monitor component behavior
1377                  * @param p_monitorCompRef Reference to monitor component
1378                  */
1379            function f_mtc_check_TP_IMS_5115_01_mw(
1380                        ImsInterfaceMonitor p_monitorCompRef,
1381                        boolean p_checkMessage
1382                ) runs on ImsTestCoordinator {
1383                                       
1384           p_monitorCompRef.start(
1385            f_imsIot_receive(
1386                {mw_SipResponse(mdw_TP_IMS_5115_01_mw)},
1387                {mw_SipResponse(mw_180Ringing_Base)},
1388                {0, omit},
1389                "TP_IMS_5115_01",
1390                true,
1391                                p_checkMessage
1392            )
1393           );
1394           p_monitorCompRef.done;
1395            }
1396               
1397                /**
1398                  * @desc Starts monitor component behavior
1399                  * @param p_monitorCompRef Reference to monitor component
1400                  */
1401                function f_mtc_check_TP_IMS_5115_02_gm(
1402                ImsInterfaceMonitor p_monitorCompRef,
1403                boolean p_checkMessage
1404                ) runs on ImsTestCoordinator {
1405   
1406                p_monitorCompRef.start(
1407                        f_imsIot_receive(
1408                                        {mw_SipResponse(mw_200OK_Base)},
1409                                        {},
1410                                        {0, omit},
1411                                        "TP_IMS_5115_02",
1412                                        false,
1413                                        p_checkMessage
1414                        )
1415                );
1416                        p_monitorCompRef.done;
1417                }
1418           
1419                /**
1420                  * @desc Starts monitor component behavior
1421                  * @param p_monitorCompRef Reference to monitor component
1422                  */
1423                function f_mtc_check_TP_IMS_5115_02_mw(
1424                ImsInterfaceMonitor p_monitorCompRef,
1425                boolean p_checkMessage
1426        ) runs on ImsTestCoordinator {
1427
1428                p_monitorCompRef.start(
1429                        f_imsIot_receive(
1430                                        {mw_SipResponse(mdw_TP_IMS_5115_02_mw)},
1431                                        {mw_SipResponse(mw_200OK_Base)},
1432                                        {0, omit},
1433                                        "TP_IMS_5115_02",
1434                                        true,
1435                                        p_checkMessage
1436                        )
1437                );
1438                p_monitorCompRef.done;
1439                }
1440               
1441                /**
1442                  * @desc Starts monitor component behavior
1443                  * @param p_monitorCompRef Reference to monitor component
1444                */
1445                function f_mtc_check_TP_IMS_5115_03_gm(
1446                        ImsInterfaceMonitor p_monitorCompRef,
1447                        boolean p_checkMessage
1448                ) runs on ImsTestCoordinator {
1449                                       
1450                p_monitorCompRef.start(
1451                        f_imsIot_receive(
1452                                        {mw_SipResponse(mw_180Ringing_Base)},
1453                                        {},
1454                                        {0, omit},
1455                                        "TP_IMS_5115_03",
1456                                        false,
1457                                        p_checkMessage
1458                                )
1459                        );
1460                        p_monitorCompRef.done;
1461                }
1462           
1463                /**
1464                  * @desc Starts monitor component behavior
1465                  * @param p_monitorCompRef Reference to monitor component
1466                  */
1467                function f_mtc_check_TP_IMS_5115_03_mw(
1468                ImsInterfaceMonitor p_monitorCompRef,
1469                boolean p_checkMessage
1470                ) runs on ImsTestCoordinator {
1471                                       
1472                        p_monitorCompRef.start(
1473                                f_imsIot_receive(
1474                                        {mw_SipResponse(mdw_TP_IMS_5115_03_mw(mw_SIP_URI_Base, mw_TEL_URI_Base))},
1475                                        {mw_SipResponse(mw_180Ringing_Base)},
1476                                        {0, omit},
1477                                        "TP_IMS_5115_03",
1478                                        true,
1479                                        p_checkMessage
1480                                )
1481                        );
1482                        p_monitorCompRef.done;
1483                }
1484               
1485                /**
1486                  * @desc Starts monitor component behavior
1487                  * @param p_monitorCompRef Reference to monitor component
1488                  */
1489                function f_mtc_check_TP_IMS_5115_04_gm(
1490                        ImsInterfaceMonitor p_monitorCompRef,
1491                        boolean p_checkMessage
1492                ) runs on ImsTestCoordinator {
1493   
1494                        p_monitorCompRef.start(
1495                                f_imsIot_receive(
1496                        {mw_SipResponse(mw_200OK_Base)},
1497                        {},
1498                        {0, omit},
1499                        "TP_IMS_5115_04",
1500                        false,
1501                        p_checkMessage
1502                                )
1503                        );
1504                        p_monitorCompRef.done;
1505                }
1506           
1507                /**
1508                  * @desc Starts monitor component behavior
1509                  * @param p_monitorCompRef Reference to monitor component
1510                  */
1511                function f_mtc_check_TP_IMS_5115_04_mw(
1512                        ImsInterfaceMonitor p_monitorCompRef,
1513                        boolean p_checkMessage
1514                ) runs on ImsTestCoordinator {
1515
1516                        p_monitorCompRef.start(
1517                                f_imsIot_receive(
1518                                {mw_SipResponse(mdw_TP_IMS_5115_04_mw(mw_SIP_URI_Base, mw_TEL_URI_Base))},
1519                                {mw_SipResponse(mw_200OK_Base)},
1520                                {0, omit},
1521                                "TP_IMS_5115_04",
1522                                true,
1523                                p_checkMessage
1524                                )
1525                        );
1526                        p_monitorCompRef.done;
1527                }
1528               
1529                /**
1530                  * @desc Starts monitor component behavior
1531                  * @param p_monitorCompRef Reference to monitor component
1532                  */
1533                function f_mtc_check_TP_IMS_5131_01_gm(
1534                ImsInterfaceMonitor p_monitorCompRef,
1535                boolean p_checkMessage
1536        ) runs on ImsTestCoordinator {
1537                                       
1538                        p_monitorCompRef.start(
1539                                f_imsIot_receive(
1540                                        {mw_SipResponse(mw_180Ringing_Base)},
1541                                        {},
1542                                        {0, omit},
1543                                        "TP_IMS_5131_01",
1544                                        false,
1545                                        p_checkMessage
1546                                )
1547                        );
1548                        p_monitorCompRef.done;
1549                }
1550           
1551                /**
1552                  * @desc Starts monitor component behavior
1553                  * @param p_monitorCompRef Reference to monitor component
1554                  */
1555                function f_mtc_check_TP_IMS_5131_01_mw(
1556                ImsInterfaceMonitor p_monitorCompRef,
1557                boolean p_checkMessage
1558        ) runs on ImsTestCoordinator { 
1559                                       
1560                        p_monitorCompRef.start(
1561                                f_imsIot_receive(
1562                                        {mw_SipResponse(mdw_TP_IMS_5131_01_mw)},
1563                                        {mw_SipResponse(mw_180Ringing_Base)},
1564                                        {0, omit},
1565                                        "TP_IMS_5131_01",
1566                                        true,
1567                                        p_checkMessage
1568                                )
1569                        );
1570                        p_monitorCompRef.done;
1571                }
1572               
1573                /**
1574                  * @desc Starts monitor component behavior
1575                  * @param p_monitorCompRef Reference to monitor component
1576                  */
1577        function f_mtc_check_TP_IMS_5131_02_gm(
1578                ImsInterfaceMonitor p_monitorCompRef,
1579                boolean p_checkMessage
1580        ) runs on ImsTestCoordinator {
1581   
1582                        p_monitorCompRef.start(
1583                                f_imsIot_receive(
1584                        {mw_SipResponse(mw_200OK_Base)},
1585                        {},
1586                        {0, omit},
1587                        "TP_IMS_5131_02",
1588                        false,
1589                                        p_checkMessage
1590                                )
1591                        );
1592                        p_monitorCompRef.done;
1593                }
1594           
1595                /**
1596                  * @desc Starts monitor component behavior
1597                  * @param p_monitorCompRef Reference to monitor component
1598                  */
1599        function f_mtc_check_TP_IMS_5131_02_mw(
1600                ImsInterfaceMonitor p_monitorCompRef,
1601                boolean p_checkMessage
1602        ) runs on ImsTestCoordinator {
1603
1604                        p_monitorCompRef.start(
1605                                f_imsIot_receive(
1606                                {mw_SipResponse(mdw_TP_IMS_5131_02_mw)},
1607                                {mw_SipResponse(mw_200OK_Base)},
1608                                {0, omit},
1609                                "TP_IMS_5131_02",
1610                                true,
1611                                        p_checkMessage
1612                                )
1613                        );
1614                        p_monitorCompRef.done;
1615                }
1616           
1617} // group
1618
1619group checksTC_IMS_CALL_0001F {
1620
1621/*functions already used in test TC_IMS_CALL_0001
1622 * f_mtc_check_TP_IMS_5097_01_gm
1623 * f_mtc_check_TP_IMS_5097_01_mw
1624 * f_mtc_check_TP_IMS_5107_01_gm
1625 * f_mtc_check_TP_IMS_5107_01_mw
1626 * f_mtc_check_TP_IMS_5107_02_gm
1627 * f_mtc_check_TP_IMS_5107_02_mw
1628 * f_mtc_check_TP_IMS_5115_01_gm
1629 * f_mtc_check_TP_IMS_5115_01_mw
1630 * f_mtc_check_TP_IMS_5115_02_gm
1631 * f_mtc_check_TP_IMS_5115_02_mw
1632 * f_mtc_check_TP_IMS_5131_01_gm
1633 * f_mtc_check_TP_IMS_5131_01_mw
1634 * f_mtc_check_TP_IMS_5131_02_gm
1635 * f_mtc_check_TP_IMS_5131_02_mw
1636 *
1637*/
1638} // group
1639
1640
1641group checksTC_IMS_SS_0001 {       
1642            /**
1643                 * @desc Starts monitor component behavior
1644                 * @param p_monitorCompRef Reference to monitor component
1645                 */
1646            function f_mtc_check_TP_IMS_5310_01_gm(
1647                ImsInterfaceMonitor p_monitorCompRef
1648            ) runs on ImsTestCoordinator {
1649                                       
1650           p_monitorCompRef.start(
1651            f_imsIot_receive(
1652                {mw_SipRequest(mw_INVITE_Request_Base)},
1653                {},
1654                {0, omit},
1655                "TP_IMS_5310_01",
1656                false,
1657                false
1658            )
1659           );
1660           p_monitorCompRef.done;
1661            }
1662           
1663            /**
1664                 * @desc Starts monitor component behavior
1665                 * @param p_monitorCompRef Reference to monitor component
1666                 */
1667            function f_mtc_check_TP_IMS_5310_01_mw(
1668                ImsInterfaceMonitor p_monitorCompRef
1669            ) runs on ImsTestCoordinator  {
1670           p_monitorCompRef.start(
1671            f_imsIot_receive(
1672                {mw_SipRequest(mdw_TP_IMS_5310_01_mw)},
1673                {mw_SipRequest(mw_INVITE_Request_Base)},
1674                {1, mw_SipRequest(mw_INVITE_Request_Base)},
1675                "TP_IMS_5310_01",
1676                false,
1677                false
1678            )
1679           );
1680           p_monitorCompRef.done;
1681            }
1682            /**
1683                 * @desc Starts monitor component behavior
1684                 * @param p_monitorCompRef Reference to monitor component
1685                 */
1686            function f_mtc_check_TP_IMS_5310_01_isc(
1687                ImsInterfaceMonitor p_monitorCompRef
1688            ) runs on ImsTestCoordinator  {
1689           p_monitorCompRef.start(
1690            f_imsIot_receive(
1691                {mw_SipRequest(mdw_TP_IMS_5310_01_isc)},
1692                {},
1693                {0, omit},
1694                "TP_IMS_5310_01",
1695                false,
1696                false
1697            )
1698           );
1699           p_monitorCompRef.done;
1700            }
1701           
1702            /**
1703                 * @desc Starts monitor component behavior
1704                 * @param p_monitorCompRef Reference to monitor component
1705                 */
1706            function f_mtc_check_TP_IMS_5312_01_mw(
1707                ImsInterfaceMonitor p_monitorCompRef
1708            ) runs on ImsTestCoordinator  {
1709           p_monitorCompRef.start(
1710            f_imsIot_receive(
1711                {mw_SipResponse(mdw_TP_IMS_5312_01_mw)},
1712                {},
1713                {1, mw_SipResponse(mw_Response_Base(c_statusLine200, ?, ?))}, // skip 1 200 OK
1714                "mdw_TP_IMS_5312_01",
1715                false,
1716                false
1717            )
1718           );
1719           p_monitorCompRef.done;
1720            }
1721            /**
1722                 * @desc Starts monitor component behavior
1723                 * @param p_monitorCompRef Reference to monitor component
1724                 */
1725            function f_mtc_check_TP_IMS_5312_01_isc(
1726                ImsInterfaceMonitor p_monitorCompRef
1727            ) runs on ImsTestCoordinator  {
1728           p_monitorCompRef.start(
1729            f_imsIot_receive(
1730                {mw_SipResponse(mdw_TP_IMS_5312_01_isc)},
1731                {},
1732                {0, omit},
1733                "TP_IMS_5312_01",
1734                false,
1735                false
1736            )
1737           );
1738           p_monitorCompRef.done;
1739            }
1740} // group
1741
1742
1743group checksTC_IMS_SS_0002 {
1744       
1745        // f_mtc_check_TP_IMS_5310_01_mw already used in test TC_IMS_SS_0001       
1746        // f_mtc_check_TP_IMS_5310_01_isc already used in test TC_IMS_SS_0001       
1747}
1748
1749group checksTC_IMS_SS_0007 {       
1750            /**
1751                 * @desc Starts monitor component behavior
1752                 * @param p_monitorCompRef Reference to monitor component
1753                 */
1754            function f_mtc_check_TP_IMS_5046_01_gm(
1755                ImsInterfaceMonitor p_monitorCompRef
1756            ) runs on ImsTestCoordinator {
1757                                       
1758           p_monitorCompRef.start(
1759            f_imsIot_receive(
1760                {mw_SipRequest(mw_INVITE_Request_Base)},
1761                {},
1762                {0, omit},
1763                "TP_IMS_5046_01",
1764                false,
1765                false
1766            )
1767           );
1768           p_monitorCompRef.done;
1769            }
1770           
1771            /**
1772                 * @desc Starts monitor component behavior
1773                 * @param p_monitorCompRef Reference to monitor component
1774                 */
1775            function f_mtc_check_TP_IMS_5046_01_mw(
1776                ImsInterfaceMonitor p_monitorCompRef
1777            ) runs on ImsTestCoordinator  {
1778                   var template SipUrl v_pcscfEutAUrl := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A));
1779                   var SipMessage v_sip;
1780                   var Route v_Route;
1781                   var template Route vt_pcscfRoute := {
1782                                        fieldName := ROUTE_E,
1783                                        routeBody := {mw_routeBody(v_pcscfEutAUrl), *}  };
1784               var Via v_Via;
1785               var template Via vt_pcscfVia := {
1786                                fieldName := VIA_E,
1787                                        viaBody := {mw_ViaBody_interface(v_pcscfEutAUrl.hostPort), *}  };
1788           p_monitorCompRef.start(
1789            f_imsIot_receive(
1790                {mw_SipRequest(mdw_TP_IMS_5046_01_mw(v_pcscfEutAUrl))},
1791                {},
1792                {0, omit},
1793                "TP_IMS_5046_01",
1794                true,
1795                false
1796            )
1797           );
1798           p_monitorCompRef.done;
1799                   f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
1800                   v_Route := v_sip.request.msgHeader.route;
1801                   v_Via := v_sip.request.msgHeader.via;
1802                       
1803                // Check Route header
1804          if (match(v_Route, vt_pcscfRoute)) {
1805                        f_setIotVerdictFAIL("TP_IMS_5046_01");
1806                }
1807                   // Check Via header
1808                   if (match(v_Via, vt_pcscfVia)) {
1809               } else {
1810                        f_setIotVerdictFAIL("TP_IMS_5046_01");
1811                   }
1812            }
1813
1814            /**
1815                 * @desc Starts monitor component
1816                 */
1817            function f_mtc_check_TP_IMS_5110_01_isc(
1818                ImsInterfaceMonitor p_monitorCompRef)
1819            runs on ImsTestCoordinator
1820            {
1821           p_monitorCompRef.start(
1822            f_imsIot_receive(
1823                {mw_SipResponse(mw_200OK_Base)},
1824                {},
1825                {0, omit}, // TODO skip parameter
1826                "TP_IMS_5110_01",
1827                false,
1828                false
1829            )
1830           );
1831           p_monitorCompRef.done;                 
1832            }
1833            /**
1834                 * @desc Starts monitor component
1835                 */
1836            function f_mtc_check_TP_IMS_5110_01_mw(
1837                ImsInterfaceMonitor p_monitorCompRef)
1838            runs on ImsTestCoordinator
1839            {
1840           p_monitorCompRef.start(
1841            f_imsIot_receive(
1842                {mw_SipResponse(mw_200OK_Base)},
1843                {},
1844                {0, omit},// TODO skip parameter
1845                "TP_IMS_5110_01",
1846                false,
1847                false
1848            )
1849           );
1850           p_monitorCompRef.done;                 
1851            }
1852
1853            /**
1854                 * @desc Starts monitor component behavior
1855                 * @param p_monitorCompRef Reference to monitor component
1856                 */
1857            function f_mtc_check_TP_IMS_5097_09_isc(
1858                ImsInterfaceMonitor p_monitorCompRef
1859            ) runs on ImsTestCoordinator  {
1860                   var template SipUrl v_EutB_ASUrl := mw_SipUrl_Host(f_GetEUTASServerAddress(PX_EUT_B));
1861           p_monitorCompRef.start(
1862            f_imsIot_receive(
1863                {mw_SipRequest(mdw_TP_IMS_5097_09_isc(v_EutB_ASUrl))},
1864                {},
1865                {0, omit},
1866                "TP_IMS_5097_09",
1867                true,
1868                false
1869            )
1870           );
1871           p_monitorCompRef.done;
1872            }
1873
1874
1875} // group
1876
1877        group messagingChecks {
1878                /**
1879                 * @desc Starts monitor component behavior for TP_IMS_5097_05
1880                 * @param p_monitorCompRef Reference to monitor component
1881                 */
1882            function f_mtc_check_TP_IMS_5097_05_gm(
1883                ImsInterfaceMonitor p_monitorCompRef,
1884                boolean p_checkMessage
1885            ) runs on ImsTestCoordinator {
1886           p_monitorCompRef.start(
1887            f_imsIot_receive(
1888                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
1889                {},
1890                {0, omit},
1891                "TP_IMS_5097_05",
1892                false,
1893                p_checkMessage
1894            )
1895           );
1896           p_monitorCompRef.done;
1897            }
1898           
1899            /**
1900                 * @desc Starts monitor component behavior for TP_IMS_5097_05
1901                 * @param p_monitorCompRef Reference to monitor component
1902                 */
1903            function f_mtc_check_TP_IMS_5097_05_mw(
1904                ImsInterfaceMonitor p_monitorCompRef,
1905                boolean p_checkMessage
1906            ) runs on ImsTestCoordinator {
1907                   var charstring v_EUT_A_Addr := f_GetEUTScscfAddress(PX_EUT_A);
1908           
1909           p_monitorCompRef.start(
1910            f_imsIot_receive(
1911                {},
1912                {
1913                        mw_SipRequest(mdw_TP_IMS_5097_05_f_mw(*, mw_SipUrl_Host(v_EUT_A_Addr))),
1914                        mw_SipRequest(mw_MESSAGE_Request_Base(*))
1915                },
1916                {0, omit},
1917                "TP_IMS_5097_05",
1918                false,
1919                true
1920            )
1921           );
1922           p_monitorCompRef.done;
1923           
1924           
1925           p_monitorCompRef.start(
1926            f_imsIot_receive(
1927                {mw_SipRequest(mdw_TP_IMS_5097_05_p_mw(*, mw_SipUrl_Host(v_EUT_A_Addr)))},
1928                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
1929                {0, omit},
1930                "TP_IMS_5097_05",
1931                false,
1932                p_checkMessage
1933            )
1934           );
1935           p_monitorCompRef.done;
1936            }
1937           
1938            /**
1939             * @desc Starts monitor component behavior for TP_IMS_5097_05
1940                 * @param p_monitorCompRef Reference to monitor component
1941                 */
1942            function f_mtc_check_TP_IMS_5097_07_gm(
1943                ImsInterfaceMonitor p_monitorCompRef,
1944                boolean p_checkMessage
1945            ) runs on ImsTestCoordinator {
1946           p_monitorCompRef.start(
1947            f_imsIot_receive(
1948                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
1949                {},
1950                {0, omit},
1951                "TP_IMS_5097_07",
1952                false,
1953                p_checkMessage
1954            )
1955           );
1956           p_monitorCompRef.done;
1957            }
1958           
1959           
1960            /**
1961                 * @desc Starts monitor component behavior for TP_IMS_5097_07
1962                 * @param p_monitorCompRef Reference to monitor component
1963                 */
1964            function f_mtc_check_TP_IMS_5097_07_mw(
1965                ImsInterfaceMonitor p_monitorCompRef,
1966                boolean p_checkMessage
1967            ) runs on ImsTestCoordinator {
1968           p_monitorCompRef.start(
1969            f_imsIot_receive(
1970                {mw_SipRequest(mdw_TP_IMS_5097_07_mw(*,mw_SIP_URI_Base, mw_TEL_URI_Base))},
1971                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
1972                {0, omit},
1973                "TP_IMS_5097_07",
1974                false,
1975                p_checkMessage
1976            )
1977           );
1978           p_monitorCompRef.done;
1979            }
1980           
1981             
1982            /**
1983             * @desc Starts monitor component behavior for TP_IMS_5097_08
1984                 * @param p_monitorCompRef Reference to monitor component
1985                 */
1986            function f_mtc_check_TP_IMS_5097_08_gm(
1987                ImsInterfaceMonitor p_monitorCompRef,
1988                boolean p_checkMessage
1989            ) runs on ImsTestCoordinator {
1990           p_monitorCompRef.start(
1991            f_imsIot_receive(
1992                {mw_SipRequest(mdw_TP_IMS_5097_08_gm(*))},
1993                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
1994                {0, omit},
1995                "TP_IMS_5097_08",
1996                false,
1997                p_checkMessage
1998            )
1999           );
2000           p_monitorCompRef.done;
2001            }
2002           
2003           
2004            /**
2005                 * @desc Starts monitor component behavior for TP_IMS_5097_08
2006                 * @param p_monitorCompRef Reference to monitor component
2007                 */
2008            function f_mtc_check_TP_IMS_5097_08_mw(
2009                ImsInterfaceMonitor p_monitorCompRef,
2010                boolean p_checkMessage
2011            ) runs on ImsTestCoordinator {
2012           p_monitorCompRef.start(
2013            f_imsIot_receive(
2014                {mw_SipRequest(mdw_TP_IMS_5097_08_mw(*))},
2015                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2016                {0, omit},
2017                "TP_IMS_5097_08",
2018                false,
2019                p_checkMessage
2020            )
2021           );
2022           p_monitorCompRef.done;
2023            }
2024           
2025           
2026            /**
2027             * @desc Starts monitor component behavior for TP_IMS_5117_02
2028                 * @param p_monitorCompRef Reference to monitor component
2029                 */
2030            function f_mtc_check_TP_IMS_5117_02_gm(
2031                ImsInterfaceMonitor p_monitorCompRef,
2032                boolean p_checkMessage
2033            ) runs on ImsTestCoordinator {
2034           p_monitorCompRef.start(
2035            f_imsIot_receive(
2036                {mw_SipResponse(mdw_2XX_Base)},
2037                {},
2038                {0, omit},
2039                "TP_IMS_5117_02",
2040                false,
2041                p_checkMessage
2042            )
2043           );
2044           p_monitorCompRef.done;
2045            }
2046           
2047           
2048            /**
2049             * @desc Starts monitor component behavior for TP_IMS_5117_02
2050                 * @param p_monitorCompRef Reference to monitor component
2051                 */
2052            function f_mtc_check_TP_IMS_5117_02_mw(
2053                ImsInterfaceMonitor p_monitorCompRef,
2054                boolean p_checkMessage
2055            ) runs on ImsTestCoordinator {
2056           p_monitorCompRef.start(
2057            f_imsIot_receive(
2058                        {mw_SipResponse(mw_TP_IMS_5117_02_mw)},
2059                {mw_SipResponse(mdw_2XX_Base)},
2060                {0, omit},
2061                "TP_IMS_5117_02",
2062                false,
2063                p_checkMessage
2064            )
2065           );
2066           p_monitorCompRef.done;
2067            }
2068           
2069           
2070           
2071            /**
2072             * @desc Starts monitor component behavior for TP_IMS_5117_06
2073                 * @param p_monitorCompRef Reference to monitor component
2074                 */
2075            function f_mtc_check_TP_IMS_5117_06_gm(
2076                ImsInterfaceMonitor p_monitorCompRef,
2077                boolean p_checkMessage
2078            ) runs on ImsTestCoordinator {
2079           p_monitorCompRef.start(
2080            f_imsIot_receive(
2081                {mw_SipResponse(mdw_2XX_Base)},
2082                {},
2083                {0, omit},
2084                "TP_IMS_5117_06",
2085                false,
2086                p_checkMessage
2087            )
2088           );
2089           p_monitorCompRef.done;
2090            }
2091           
2092           
2093            /**
2094             * @desc Starts monitor component behavior for TP_IMS_5117_06
2095                 * @param p_monitorCompRef Reference to monitor component
2096                 */
2097            function f_mtc_check_TP_IMS_5117_06_mw(
2098                ImsInterfaceMonitor p_monitorCompRef,
2099                boolean p_checkMessage
2100            ) runs on ImsTestCoordinator {
2101           p_monitorCompRef.start(
2102            f_imsIot_receive(
2103                        {mw_SipResponse(mw_TP_IMS_5117_06_mw)},
2104                {mw_SipResponse(mdw_2XX_Base)},
2105                {0, omit},
2106                "TP_IMS_5117_06",
2107                false,
2108                p_checkMessage
2109            )
2110           );
2111           p_monitorCompRef.done;
2112            }
2113           
2114           
2115            /**
2116             * @desc Starts monitor component behavior for TP_IMS_5118_01
2117                 * @param p_monitorCompRef Reference to monitor component
2118                 */
2119            function f_mtc_check_TP_IMS_5118_01_gm(
2120                ImsInterfaceMonitor p_monitorCompRef,
2121                boolean p_checkMessage
2122            ) runs on ImsTestCoordinator {
2123           p_monitorCompRef.start(
2124            f_imsIot_receive(
2125                {mw_SipResponse(mw_200OK_Base)},
2126                {},
2127                {0, omit},
2128                "TP_IMS_5118_01",
2129                false,
2130                p_checkMessage
2131            )
2132           );
2133           p_monitorCompRef.done;
2134            }
2135           
2136           
2137            /**
2138             * @desc Starts monitor component behavior for TP_IMS_5118_01
2139                 * @param p_monitorCompRef Reference to monitor component
2140                 */
2141            function f_mtc_check_TP_IMS_5118_01_mw(
2142                ImsInterfaceMonitor p_monitorCompRef,
2143                boolean p_checkMessage
2144            ) runs on ImsTestCoordinator {
2145           p_monitorCompRef.start(
2146            f_imsIot_receive(
2147                        {mw_SipResponse(mw_TP_IMS_5118_01_mw)},
2148                {mw_SipResponse(mw_200OK_Base)},
2149                {0, omit},
2150                "TP_IMS_5118_01",
2151                false,
2152                p_checkMessage
2153            )
2154           );
2155           p_monitorCompRef.done;
2156            }   
2157               
2158                 
2159            /**
2160             * @desc Starts monitor component behavior for TP_IMS_5108_02
2161                 * @param p_monitorCompRef Reference to monitor component
2162                 */
2163            function f_mtc_check_TP_IMS_5108_02_gm(
2164                ImsInterfaceMonitor p_monitorCompRef,
2165                boolean p_checkMessage
2166            ) runs on ImsTestCoordinator {
2167           p_monitorCompRef.start(
2168            f_imsIot_receive(
2169                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2170                {},
2171                {0, omit},
2172                "TP_IMS_5108_02",
2173                false,
2174                p_checkMessage
2175            )
2176           );
2177           p_monitorCompRef.done;
2178            }
2179           
2180            /**
2181                 * @desc Starts monitor component behavior for TP_IMS_5108_02
2182                 * @param p_monitorCompRef Reference to monitor component
2183                 */
2184            function f_mtc_check_TP_IMS_5108_02_mw(
2185                ImsInterfaceMonitor p_monitorCompRef
2186            ) runs on ImsTestCoordinator {
2187               var template SipUrl v_SCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B));
2188           var SemicolonParam_List p_paramList;
2189           var GenericParam p_param;
2190           var SipMessage v_sip;
2191           
2192           p_monitorCompRef.start(
2193            f_imsIot_receive(
2194                {mw_SipRequest(mdw_TP_IMS_5108_02a_mw(*))},
2195                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2196                {0, omit},
2197                "TP_IMS_5108_02",
2198                true,
2199                true
2200            )
2201           );
2202           p_monitorCompRef.done;
2203           
2204           f_getSipMsgFromMonitor(p_monitorCompRef, v_sip);
2205           p_paramList := v_sip.request.msgHeader.pChargingVector.chargeParams;
2206           for(var integer i := 0; i < lengthof(p_paramList); i:= i+1) {
2207                        if(p_paramList[i].id == "icid-value") {
2208                                p_param := p_paramList[i];
2209                        }
2210           }
2211           
2212           p_monitorCompRef.start(
2213            f_imsIot_receive(
2214                {},
2215                {
2216                        mw_SipRequest(mdw_TP_IMS_5108_02b_f_mw(*)),
2217                        mw_SipRequest(mw_MESSAGE_Request_Base(*))
2218                },
2219                {0, omit},
2220                "TP_IMS_5108_02",
2221                false,
2222                true
2223            )
2224           );
2225           p_monitorCompRef.done;
2226           
2227           
2228           p_monitorCompRef.start(
2229            f_imsIot_receive(
2230                {},
2231                {
2232                        mw_SipRequest(mdw_TP_IMS_5108_02b_p_mw(*, v_SCSCF_IMS_B, p_param)),
2233                        mw_SipRequest(mw_MESSAGE_Request_Base(*))
2234                },
2235                {0, omit},
2236                "TP_IMS_5108_02",
2237                false,
2238                false
2239            )
2240           );
2241           p_monitorCompRef.done;
2242            }
2243         
2244            /**
2245             * @desc Starts monitor component behavior for TP_IMS_5050_01
2246                 * @param p_monitorCompRef Reference to monitor component
2247                 */
2248            function f_mtc_check_TP_IMS_5050_01_gm(
2249                ImsInterfaceMonitor p_monitorCompRef,
2250                boolean p_checkMessage
2251            ) runs on ImsTestCoordinator {
2252           p_monitorCompRef.start(
2253            f_imsIot_receive(
2254                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2255                {},
2256                {0, omit},
2257                "TP_IMS_5050_01",
2258                false,
2259                p_checkMessage
2260            )
2261           );
2262           p_monitorCompRef.done;
2263            }
2264       
2265         
2266            /**
2267             * @desc Starts monitor component behavior for TP_IMS_5050_01
2268                 * @param p_monitorCompRef Reference to monitor component
2269                 */
2270            function f_mtc_check_TP_IMS_5050_01_mw(
2271                ImsInterfaceMonitor p_monitorCompRef,
2272                boolean p_checkMessage
2273            ) runs on ImsTestCoordinator {
2274                var template SipUrl v_PCSCF_IMS_B := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_B));
2275                var template SipUrl v_UE_A := mw_SipUrl_Host(f_GetEUTPublicId(PX_EUT_A));
2276               
2277           p_monitorCompRef.start(
2278            f_imsIot_receive(
2279                        {mw_SipRequest(mdw_TP_IMS_5050_01_mw(*, v_PCSCF_IMS_B, v_UE_A))},
2280                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2281                {0, omit},
2282                "TP_IMS_5050_01",
2283                false,
2284                p_checkMessage
2285            )
2286           );
2287           p_monitorCompRef.done;
2288            }   
2289           
2290            /**
2291             * @desc Starts monitor component behavior for TP_IMS_5050_01
2292                 * @param p_monitorCompRef Reference to monitor component
2293                 */
2294            function f_mtc_check_TP_IMS_5114_02_gm(
2295                ImsInterfaceMonitor p_monitorCompRef
2296            ) runs on ImsTestCoordinator {
2297               
2298              p_monitorCompRef.start(
2299            f_imsIot_receive(
2300                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2301                {},
2302                {0, omit},
2303                "TP_IMS_5114_02",
2304                false,
2305                false
2306            )
2307           );
2308           p_monitorCompRef.done;       
2309            }
2310           
2311            /**
2312             * @desc Starts monitor component behavior for TP_IMS_5050_01
2313                 * @param p_monitorCompRef Reference to monitor component
2314                 */
2315            function f_mtc_check_TP_IMS_5114_02_mw(
2316                ImsInterfaceMonitor p_monitorCompRef
2317            ) runs on ImsTestCoordinator {
2318               
2319              p_monitorCompRef.start(
2320            f_imsIot_receive(
2321                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2322                {},
2323                {0, omit},
2324                "TP_IMS_5114_02",
2325                false,
2326                false
2327            )
2328           );
2329           p_monitorCompRef.done;       
2330           
2331           p_monitorCompRef.start(
2332            f_imsIot_receive(
2333                        {mw_SipResponse(mdw_4XX_Base)},
2334                {},
2335                {0, omit},
2336                "TP_IMS_5114_02",
2337                false,
2338                false
2339            )
2340           );
2341           p_monitorCompRef.done;
2342            }
2343           
2344            /**
2345             * @desc Starts monitor component behavior for TP_IMS_5108_06
2346                 * @param p_monitorCompRef Reference to monitor component
2347                 */
2348            function f_mtc_check_TP_IMS_5108_06_gm(
2349                ImsInterfaceMonitor p_monitorCompRef
2350            ) runs on ImsTestCoordinator {
2351               p_monitorCompRef.start(
2352            f_imsIot_receive(
2353                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2354                {},
2355                {0, omit},
2356                "TP_IMS_5108_06",
2357                false,
2358                false
2359            )
2360           );
2361           p_monitorCompRef.done;
2362            }
2363           
2364            /**
2365             * @desc Starts monitor component behavior for TP_IMS_5108_06
2366                 * @param p_monitorCompRef Reference to monitor component
2367                 */
2368            function f_mtc_check_TP_IMS_5108_06_mw(
2369                ImsInterfaceMonitor p_monitorCompRef
2370            ) runs on ImsTestCoordinator {
2371               
2372              p_monitorCompRef.start(
2373            f_imsIot_receive(
2374                {mw_SipRequest(mw_MESSAGE_Request_Base(*))},
2375                {},
2376                {0, omit},
2377                "TP_IMS_5108_06",
2378                false,
2379                false
2380            )
2381           );
2382           p_monitorCompRef.done;       
2383           
2384           p_monitorCompRef.start(
2385            f_imsIot_receive(
2386                        {mw_SipResponse(mw_404NotFound_Base)},
2387                {},
2388                {0, omit},
2389                "TP_IMS_5114_02",
2390                false,
2391                false
2392            )
2393           );
2394           p_monitorCompRef.done;
2395            }
2396        }
2397       
2398} // end group
2399}// end module
Note: See TracBrowser for help on using the repository browser.