AtsImsIot_Emergency.ttcn 195 KB
Newer Older
                        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
                 * @remark This is option 1: PSAP is in IMS A network
                 */
                testcase TC_VoLTE_ECO_INT_DTC_02_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,
                                                              PX_SIP_MM_B_PSAP_INTERFACENAME // E-CSCCF -> PSAP
                                                              })){
                        var SipMessage v_sip;

                        f_cf_createVxLteMonitor();

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

                        // Preamble
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        if (PX_PSAP_REGISTERED) {
                            f_mtc_userRegistration(v_psap, v_infoPsap);
                        } else {
                            // TODO Check OPTIONS from PSAP to E-CSCF
                        }
                        f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_01();
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1

                        // Test body
                        f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2

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

                        f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7

                        f_mtc_check_TP_MM_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 8

                        f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 13
                        f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18
                        f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19

                        f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)

                        f_mtc_userCheckCallTerminated(v_ueA); // Event 22
                        f_mtc_userCheckCallCancelled(v_psap); // Event 23

                        // 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")
                    }
                } // End of TC TC_VoLTE_ECO_INT_DTC_02_01

                group f_TC_VoLTE_ECO_INT_DTC_02_01 {

                    function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_01() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                     } // End of function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_01

                } // End of f_TC_VoLTE_ECO_INT_DTC_02_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
                 * @remark This is option 2: PSAP is not in IMS A network
                 */
                testcase TC_VoLTE_ECO_INT_DTC_02_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,
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_IC_INTERFACENAME // IBCF -> IMS_B -> PSAP
                                                              })){
                        var SipMessage v_sip;

                        f_cf_createVxLteMonitor();

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

                        // Preamble
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        if (PX_PSAP_REGISTERED) {
                            f_mtc_userRegistration(v_psap, v_infoPsap);
                        } else {
                            // TODO Check OPTIONS from PSAP to E-CSCF
                        }
                        f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_02();
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1

                        // Test body
                        f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2

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

                        f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7

                        f_mtc_check_TP_MX_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 9
                        f_mtc_check_TP_IC_IBCF_ECO_BYE_01(vc_vxlte_monitor_components.ic); // Event 10

                        f_mtc_check_TP_MX_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 15
                        f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18
                        f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19

                        f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)

                        f_mtc_userCheckCallTerminated(v_ueA); // Event 22
                        f_mtc_userCheckCallCancelled(v_psap); // Event 23

                        // 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")
                    }
                } // End of TC TC_VoLTE_ECO_INT_DTC_02_02

                group f_TC_VoLTE_ECO_INT_DTC_02_02 {

                    function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_02() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                     } // End of function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_02

                } // End of f_TC_VoLTE_ECO_INT_DTC_02_02

                /**
                 * @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
                 * @remark This is option 3: PSAP is in PSTN network
                 */
                testcase TC_VoLTE_ECO_INT_DTC_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, // E-CSCF -> IBCF
                                                              PX_SIP_IC_INTERFACENAME // IBCF -> IMS -> PSAP
                                                              })){
                        var SipMessage v_sip;

                        f_cf_createVxLteMonitor();

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

                        // Preamble
                        f_mtc_userRegistration(v_ueA, v_userInfoA);
                        if (PX_PSAP_REGISTERED) {
                            f_mtc_userRegistration(v_psap, v_infoPsap);
                        } else {
                            // TODO Check OPTIONS from PSAP to E-CSCF
                        }
                        f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_03();
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1

                        // Test body
                        f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2

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

                        f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 7

                        f_mtc_check_TP_MI_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 11

                        f_mtc_check_TP_MI_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwEB, -, v_sip); // Event 17
                        f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 18
                        f_mtc_check_TP_GM_PCSCF_200OK_02(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 19

                        f_mtc_check_TP_GX_PCRF_ECO_CCA_01/*f_mtc_check_TP_GX_PCRF_ECO_CCA_02*/ ( vc_vxlte_monitor_components.gx, false ); // Check (CCA – Event 20)

                        f_mtc_userCheckCallTerminated(v_ueA); // Event 22
                        f_mtc_userCheckCallCancelled(v_psap); // Event 23

                        // 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")
                    }
                } // End of TC TC_VoLTE_ECO_INT_DTC_02_03

                group f_TC_VoLTE_ECO_INT_DTC_02_03 {

                    function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_03() runs on ImsTestCoordinator {
                        log("If the test case fails, please check the preconditions");
                     } // End of function f_mtc_check_precond_TC_VoLTE_ECO_INT_DTC_02_03

                } // End of f_TC_VoLTE_ECO_INT_DTC_02_03
            } // 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