AtsImsIot_Emergency.ttcn 155 KB
Newer Older
               /**
                 * @desc    To perform originating PSAP session release and the tear down of related dedicated bearers.
                 *          On call release initiated bye PSAP, the P-CSCF A should trigger the removal of all relevant previously created bearers
                 * @see ETSI TS 103 795-2 Clause 5.3.3.2	PSAP Initiated Emergency Session Release
                 * @remark This is option2: PSAP is in the same network
                 */
                testcase TD_VoLTE_ECO_INT_REL_02_03() runs on ImsTestCoordinator system IotSystemInterface {

                    var IotEquipmentUser v_ueA  := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
                    var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
                    var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
                    var ImsUserInfo v_infoPsap  := f_getImUser ( PX_PSAP );

                    f_setVxLteMonIterfacesAvailability();
                    //Check required monitor interfaces due to TD
                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
Yann Garcia's avatar
Yann Garcia committed
                                                              PX_SIP_MW_EB_INTERFACENAME // E-CSCF -> BGCF
                        // map/connect component ports
                        f_cf_adapter_up ( );
                        f_cf_user_up ( v_ueA );
                        f_cf_user_up ( v_psap );
                        f_cf_VxLteMonitor_Up();
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        f_mtc_userRegistration(v_psap, v_infoPsap);
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap);
                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 1
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_02_03();
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        // TODO
                        f_mtc_userCheckCallTerminated(v_ueA); // Event 21
                        f_mtc_userCheckCallCancelled(v_psap); // Event 20
                        // Postamble
                        f_PO_user_home_deregistration(v_ueA);
                        f_PO_user_home_deregistration(v_psap);
                        f_cf_user_down ( v_psap );
                        f_cf_user_down ( v_ueA );
                        f_cf_VxLteMonitor_Down();
                        f_cf_adapter_down ( );
                    }else{
                        //log...
                        setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                    }
                    f_cf_adapter_down ( );
                } // End of TC TD_VoLTE_ECO_INT_REL_02_03
                group f_TD_VoLTE_ECO_INT_REL_02_03 {
                    function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_02_03() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                        // TODO Add real code to check pre-conditions
                     } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REL_02_03
                } // End of group f_TD_VoLTE_ECO_INT_REL_02_03

            } // End of group EmergencySessionRelease

            group EmergencySessionAbortOrReject {

                /**
                 * @desc    To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A.
                 * @see ETSI TS 103 795-2 Clause 5.3.4.1	Emergency Session Abort 
                 * @remark This is option 1: PSAP is in IMS A network
                 */
                testcase TD_VoLTE_ECO_INT_ABT_01_01() runs on ImsTestCoordinator system IotSystemInterface {

                    var IotEquipmentUser v_ueA  := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
                    var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
                    var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
                    var ImsUserInfo v_infoPsap  := f_getImUser ( PX_PSAP );

                    f_setVxLteMonIterfacesAvailability();
                    //Check required monitor interfaces due to TD
                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
Yann Garcia's avatar
Yann Garcia committed
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
                        // map/connect component ports
                        f_cf_adapter_up ( );
                        f_cf_user_up ( v_ueA );
                        f_cf_user_up ( v_psap );
                        f_cf_VxLteMonitor_Up();
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        f_mtc_userRegistration(v_psap, v_infoPsap);
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap);
                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 1
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_01();
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        f_mtc_check_TP_GM_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 1

                        //Rx/Gx exchange after CANCEL was received at P-CSCF
                        f_mtc_check_TP_RX_PCSCF_STR_01(vc_vxlte_monitor_components.rx); // (STR – Event 2
                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // (RAR – Event 3)
                        f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // (RAA – Event 4)
                        f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // (STA – Event 5)                        

                        f_mtc_check_TP_MW_PCSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 6
Yann Garcia's avatar
Yann Garcia committed
                        f_mtc_check_TP_MM_ECSCF_ECO_CANCEL_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 7
Yann Garcia's avatar
Yann Garcia committed
                        f_mtc_check_TP_MW_IBCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 8
                        f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 17
                        f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18

                        f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 26
                        f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27
Yann Garcia's avatar
Yann Garcia committed
                        f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 28
                        f_mtc_userCheckCallTerminated(v_ueA); // Event 33
                        f_mtc_userCheckCallCancelled(v_psap); // Event 34
                        // Postamble
                        f_PO_user_home_deregistration(v_ueA);
                        f_PO_user_home_deregistration(v_psap);
                        f_cf_user_down ( v_psap );
                        f_cf_user_down ( v_ueA );
                        f_cf_VxLteMonitor_Down();
                        f_cf_adapter_down ( );
                    }else{
                        //log...
                        setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                    }
                    f_cf_adapter_down ( );
                } // End of TC TD_VoLTE_ECO_INT_ABT_01_01
                group f_TD_VoLTE_ECO_INT_ABT_01_01 {
                    function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_01() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                        // TODO Add real code to check pre-conditions
                     } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_01
                } // End of group f_TD_VoLTE_ECO_INT_ABT_01_01

                /**
                 * @desc    To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A.
                 * @see ETSI TS 103 795-2 Clause 5.3.4.1	Emergency Session Abort 
                 * @remark This is option 1: PSAP is not in IMS A network
                 */
                testcase TD_VoLTE_ECO_INT_ABT_01_02() runs on ImsTestCoordinator system IotSystemInterface {

                    var IotEquipmentUser v_ueA  := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
                    var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
                    var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
                    var ImsUserInfo v_infoPsap  := f_getImUser ( PX_PSAP );

                    f_setVxLteMonIterfacesAvailability();
                    //Check required monitor interfaces due to TD
                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
Yann Garcia's avatar
Yann Garcia committed
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> PSAP
                                                              }))
                    {
                        var SipMessage v_sip;
                        // map/connect component ports
                        f_cf_adapter_up ( );
                        f_cf_user_up ( v_ueA );
                        f_cf_user_up ( v_psap );
                        f_cf_VxLteMonitor_Up();
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        f_mtc_userRegistration(v_psap, v_infoPsap);
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap);
                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 1
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_02();
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        // TODO
                        f_mtc_userCheckCallTerminated(v_ueA); // Event 33
                        f_mtc_userCheckCallCancelled(v_psap); // Event 34
                        // Postamble
                        f_PO_user_home_deregistration(v_ueA);
                        f_PO_user_home_deregistration(v_psap);
                        f_cf_user_down ( v_psap );
                        f_cf_user_down ( v_ueA );
                        f_cf_VxLteMonitor_Down();
                        f_cf_adapter_down ( );
                    }else{
                        //log...
                        setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                    }
                    f_cf_adapter_down ( );
                } // End of TC TD_VoLTE_ECO_INT_ABT_01_02
                group f_TD_VoLTE_ECO_INT_ABT_01_02 {
                    function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_02() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                        // TODO Add real code to check pre-conditions
                     } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_02
                } // End of group f_TD_VoLTE_ECO_INT_ABT_01_02

                /**
                 * @desc    To perform SIP session abort (originating side) and the related interactions with PCRF A and EPC A.
                 * @see ETSI TS 103 795-2 Clause 5.3.4.1	Emergency Session Abort 
                 * @remark This is option 1: PSAP is in PSTN network
                testcase TD_VoLTE_ECO_INT_ABT_01_03() runs on ImsTestCoordinator system IotSystemInterface {

                    var IotEquipmentUser v_ueA  := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
                    var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
                    var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
                    var ImsUserInfo v_infoPsap  := f_getImUser ( PX_PSAP );

                    f_setVxLteMonIterfacesAvailability();
                    //Check required monitor interfaces due to TD
                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
Yann Garcia's avatar
Yann Garcia committed
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> PSAP
                        f_cf_createVxLteMonitor();
                        // map/connect component ports
                        f_cf_adapter_up ( );
                        f_cf_user_up ( v_ueA );
                        f_cf_user_up ( v_psap );
                        f_cf_VxLteMonitor_Up();
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        f_mtc_userRegistration(v_psap, v_infoPsap);
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap);
                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 1
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_03();
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        f_mtc_userCheckCallTerminated(v_ueA); // Event 33
                        f_mtc_userCheckCallCancelled(v_psap); // Event 34
                        // Postamble
                        f_PO_user_home_deregistration(v_ueA);
                        f_PO_user_home_deregistration(v_psap);
                        f_cf_user_down ( v_psap );
                        f_cf_user_down ( v_ueA );
                        f_cf_VxLteMonitor_Down();
                        f_cf_adapter_down ( );
                    }else{
                        //log...
                        setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                    }
                    f_cf_adapter_down ( );
                } // End of TC TD_VoLTE_ECO_INT_ABT_01_03
                group f_TD_VoLTE_ECO_INT_ABT_01_03 {
                    function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_03() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                        // TODO Add real code to check pre-conditions
                     } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_ABT_01_03
                } // End of group f_TD_VoLTE_ECO_INT_ABT_01_03
                /**
                 * @desc    To demonstrate interaction between UE A and PSAP when an emergency session is rejected.
                 * @see ETSI TS 103 795-2 5.3.4.3	Emergency Session Reject
                 * @remark This is option 1: PSAP is in IMS A network
                 */
                testcase TD_VoLTE_ECO_INT_REJ_01_01() runs on ImsTestCoordinator system IotSystemInterface {

                    var IotEquipmentUser v_ueA  := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
                    var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
                    var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
                    var ImsUserInfo v_infoPsap  := f_getImUser ( PX_PSAP );

                    f_setVxLteMonIterfacesAvailability();
                    //Check required monitor interfaces due to TD
                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
Yann Garcia's avatar
Yann Garcia committed
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
                        // map/connect component ports
                        f_cf_adapter_up ( );
                        f_cf_user_up ( v_ueA );
                        f_cf_user_up ( v_psap );
                        f_cf_VxLteMonitor_Up();
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        f_mtc_userRegistration(v_psap, v_infoPsap);
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap);
                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 1
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_01();
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        // TODO
                        f_mtc_userCheckCallTerminated(v_ueA); // Event 33
                        f_mtc_userCheckCallCancelled(v_psap); // Event 34
                        // Postamble
                        f_PO_user_home_deregistration(v_ueA);
                        f_PO_user_home_deregistration(v_psap);
                        //unmap/disconnect component ports
                        f_cf_user_down ( v_psap );
                        f_cf_user_down ( v_ueA );
                        f_cf_VxLteMonitor_Down();
                        f_cf_adapter_down ( );
                    }else{
                        //log...
                        setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                    }
                    f_cf_adapter_down ( );
                } // End of TC TD_VoLTE_ECO_INT_REJ_01_01
                group f_TD_VoLTE_ECO_INT_REJ_01_01 {
                    function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_01() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                        // TODO Add real code to check pre-conditions
                     } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_01
                } // End of group f_TD_VoLTE_ECO_INT_REJ_01_01
                 * @desc    To demonstrate interaction between UE A and PSAP when an emergency session is rejected.
                 * @see ETSI TS 103 795-2 5.3.4.3	Emergency Session Reject
                 * @remark This is option 1: PSAP is not in IMS A network
                testcase TD_VoLTE_ECO_INT_REJ_01_02() runs on ImsTestCoordinator system IotSystemInterface {

                    var IotEquipmentUser v_ueA  := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
                    var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
                    var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
                    var ImsUserInfo v_infoPsap  := f_getImUser ( PX_PSAP );

                    f_setVxLteMonIterfacesAvailability();
                    //Check required monitor interfaces due to TD
                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
Yann Garcia's avatar
Yann Garcia committed
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> PSAP
                        // map/connect component ports
                        f_cf_adapter_up ( );
                        f_cf_user_up ( v_ueA );
                        f_cf_user_up ( v_psap );
                        f_cf_VxLteMonitor_Up();
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        f_mtc_userRegistration(v_psap, v_infoPsap);
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap);
                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 1
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_02();
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        f_mtc_userCheckCallTerminated(v_ueA); // Event 33
                        f_mtc_userCheckCallCancelled(v_psap); // Event 34
                        // Postamble
                        f_PO_user_home_deregistration(v_ueA);
                        f_PO_user_home_deregistration(v_psap);
                        f_cf_user_down ( v_psap );
                        f_cf_user_down ( v_ueA );
                        f_cf_VxLteMonitor_Down();
                        f_cf_adapter_down ( );
                    }else{
                        //log...
                        setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                    }
                    f_cf_adapter_down ( );
                } // End of TC TD_VoLTE_ECO_INT_REJ_01_02
                group f_TD_VoLTE_ECO_INT_REJ_01_02 {
                    function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_02() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                        // TODO Add real code to check pre-conditions
                     } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_02
                } // End of group f_TD_VoLTE_ECO_INT_REJ_01_02
                /**
                 * @desc    To demonstrate interaction between UE A and PSAP when an emergency session is rejected.
                 * @see ETSI TS 103 795-2 5.3.4.3	Emergency Session Reject
                 * @remark This is option 1: PSAP is in PSTN network
                 */
                testcase TD_VoLTE_ECO_INT_REJ_01_03() runs on ImsTestCoordinator system IotSystemInterface {

                    var IotEquipmentUser v_ueA  := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
                    var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
                    var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
                    var ImsUserInfo v_infoPsap  := f_getImUser ( PX_PSAP );

                    f_setVxLteMonIterfacesAvailability();
                    //Check required monitor interfaces due to TD
                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
Yann Garcia's avatar
Yann Garcia committed
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> PSAP
                                                              }))
                    {
                        var SipMessage v_sip;
                        // map/connect component ports
                        f_cf_adapter_up ( );
                        f_cf_user_up ( v_ueA );
                        f_cf_user_up ( v_psap );
                        f_cf_VxLteMonitor_Up();
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        f_mtc_userRegistration(v_psap, v_infoPsap);
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap);
                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 1
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_03();
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        // TODO
                        f_mtc_userCheckCallTerminated(v_ueA); // Event 33
                        f_mtc_userCheckCallCancelled(v_psap); // Event 34
                        // Postamble
                        f_PO_user_home_deregistration(v_ueA);
                        f_PO_user_home_deregistration(v_psap);
                        //unmap/disconnect component ports
                        f_cf_user_down ( v_psap );
                        f_cf_user_down ( v_ueA );
                        f_cf_VxLteMonitor_Down();
                        f_cf_adapter_down ( );
                    }else{
                        //log...
                        setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                    }
                    f_cf_adapter_down ( );
                } // End of TC TD_VoLTE_ECO_INT_REJ_01_03
                group f_TD_VoLTE_ECO_INT_REJ_01_03 {
                    function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_03() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                        // TODO Add real code to check pre-conditions
                     } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_01_03
                } // End of group f_TD_VoLTE_ECO_INT_REJ_01_03
                /**
                 * @desc    To demonstrate interaction between UE A and P-CSCF when an emergency session is rejected.
                 * @see ETSI TS 103 795-2 Clause 5.3.4.3	Emergency Session Reject
                testcase TD_VoLTE_ECO_INT_REJ_02() runs on ImsTestCoordinator system IotSystemInterface {

                    var IotEquipmentUser v_ueA  := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
                    var IotEquipmentUser v_psap := f_cf_create_IotEquipmentUser ( c_psap );
                    var ImsUserInfo v_userInfoA := f_getImUser ( PX_EUT_A_EMERGENCY );
                    var ImsUserInfo v_infoPsap  := f_getImUser ( PX_PSAP );

                    f_setVxLteMonIterfacesAvailability();
                    //Check required monitor interfaces due to TD
                    if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
Yann Garcia's avatar
Yann Garcia committed
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
                        f_cf_createVxLteMonitor();
                        // map/connect component ports
                        f_cf_adapter_up ( );
                        f_cf_user_up ( v_ueA );
                        f_cf_user_up ( v_psap );
                        f_cf_VxLteMonitor_Up();
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        f_mtc_userRegistration(v_psap, v_infoPsap);
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap);
                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 1
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_02();
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        // TODO
                        f_mtc_userCheckCallTerminated(v_ueA); // Event 33
                        f_mtc_userCheckCallCancelled(v_psap); // Event 34
                        // Postamble
                        f_PO_user_home_deregistration(v_ueA);
                        f_PO_user_home_deregistration(v_psap);
                        //unmap/disconnect component ports
                        f_cf_user_down ( v_psap );
                        f_cf_user_down ( v_ueA );
                        f_cf_VxLteMonitor_Down();
                        f_cf_adapter_down ( );
                    }else{
                        //log...
                        setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
                    }
                    f_cf_adapter_down ( );
                } // End of TC TD_VoLTE_ECO_INT_REJ_02
                    function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_02() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                        // TODO Add real code to check pre-conditions
                     } // End of function f_mtc_check_precond_TD_VoLTE_ECO_INT_REJ_02
                } // End of group f_TD_VoLTE_ECO_INT_REJ_02

            } // End of group EmergencySessionAbortOrReject

        } // End of group EmergencySessionEmergencyBearerOperations

        /**
         * @see ETSI TS 103 795-2 Clause 5.5	Emergency Network Detachment
         */
        group EmergencyNetworkDetachment {

            group EmergencySessionDetachment {
				 * @desc    To demonstrate UE initiated network emergency detachment (IP-CAN session termination) for a UE that has not yet emergency registered to the IMS or for UE that has been emergency registered to the IMS
				 * @see ETSI TS 103 795-2 Clause 5.5.1	UE Emergency  Network Detachment (with/without Emergency Registration)
				 */
				testcase TC_VoLTE_ECO_INT_DTC_01 ( ) runs on ImsTestCoordinator system IotSystemInterface {
					var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
					var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );
					f_setVxLteMonIterfacesAvailability();
					//Check required monitor interfaces due to TD
					if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){
						f_cf_createVxLteMonitor();

						// map/connect component ports
						f_cf_adapter_up ( );
						f_cf_user_up ( v_ueA );
						f_cf_VxLteMonitor_Up();
						//preamble
						f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
						f_mtc_userRadioEnabled ( v_ueA, false, true );
						// test body
						// Check that user A starts initial network attachment
						f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 3)
						//postamble
						//unmap/disconnect component ports
						f_cf_user_down ( v_ueA );
						f_cf_VxLteMonitor_Down();
						f_cf_adapter_down ( );
					}else{
						//log...
						setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
					}
				} // End of TC TC_VoLTE_ECO_INT_DTC_01

				/**
				 * @desc    To demonstrate UE initiated emergency network detachment (emergency IP-CAN session termination) for a UE that is emergency registered to IMS and also has active emergency session
				 * @see ETSI TS 103 795-2 Clause 5.5.2	UE Emergency Network Detachment with Previously Established Emergency Registration & Emergency Session
				 */
				testcase TC_VoLTE_ECO_INT_DTC_02 ( ) runs on ImsTestCoordinator system IotSystemInterface {
					var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A_emergency );
					var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A_EMERGENCY );
					f_setVxLteMonIterfacesAvailability();
					//Check required monitor interfaces due to TD
					if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME})){
						f_cf_createVxLteMonitor();

						// map/connect component ports
						f_cf_adapter_up ( );
						f_cf_user_up ( v_ueA );
						f_cf_VxLteMonitor_Up();

						//preamble
						f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile
						f_mtc_userRadioEnabled ( v_ueA, false, true );
						// test body
						// TODO
						//unmap/disconnect component ports
						f_cf_user_down ( v_ueA );
						f_cf_VxLteMonitor_Down();
						f_cf_adapter_down ( );
					}else{
						//log...
						setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
					}
				} // End of TC TC_VoLTE_ECO_INT_DTC_02

            } // End of group EmergencySessionDetachment

        } // End of group EmergencyNetworkDetachment

    } // End of group Interoperability

    /**
      * @see ETSI TS 103 795-2 Clause 6	Test Descriptions (Roaming)
      */
    group Roaming {

        /**
         * @see ETSI TS 103 795-2 6.1	Network Attachment
         */
        group NetworkAttachment {

        } // End of group NetworkAttachment

        /**
         * @see ETSI TS 103 795-2 Clause 6.2	IMS Emergency Registration in a visited network
         */
        group IMSEmergencyRegistration {

        } // End of group IMSEmergencyRegistration

    } // End of group Roaming

} // End of module AtsImsIot_Emergency