Commit 6f480f05 authored by Yann Garcia's avatar Yann Garcia
Browse files

Review of TTCN-3 implementation & templates of all emergency TPs for the SIP part

parent fdeb971b
Loading
Loading
Loading
Loading
+416 −201
Original line number Diff line number Diff line
@@ -1720,8 +1720,6 @@ module AtsImsIot_Emergency {
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1

                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);

                        f_mtc_check_TP_GM_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 2
                        f_mtc_check_TP_MW_PCSCF_ECO_BYE_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 3
                        f_mtc_check_TP_MM_ECSCF_ECO_BYE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 4
@@ -3007,15 +3005,25 @@ module AtsImsIot_Emergency {
                /**
                 * @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 ( ) runs on ImsTestCoordinator system IotSystemInterface {
                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_DIAMETER_GX_INTERFACENAME})){
                    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
@@ -3023,15 +3031,44 @@ module AtsImsIot_Emergency {
                        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
                        // 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

						//postamble
                        // 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); // Event 3
                        f_mtc_check_TP_GX_PCRF_RAR_02(vc_vxlte_monitor_components.gx, true); // Event 4
                        f_mtc_check_TP_GX_PGW_RAA_03(vc_vxlte_monitor_components.gx); // Event 5
                        f_mtc_check_TP_RX_PCRF_STA_01(vc_vxlte_monitor_components.rx); // 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_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 ( );
@@ -3039,7 +3076,185 @@ module AtsImsIot_Emergency {
                        //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 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_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_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

+45 −1
Original line number Diff line number Diff line
@@ -1248,6 +1248,50 @@ group g_PCRF {
			}
		} // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_01
		
		function f_mtc_check_TP_GX_PCRF_ECO_CCA_02( // FIXME To be reviewd
			DiameterInterfaceMonitor p_monitorCompRef,
			in boolean p_checkMessage := false,
			in boolean p_forward_to_mtc := false
		) runs on ImsTestCoordinator {
			if (isvalue(p_monitorCompRef)){
                var template DIAMETER_MSG mw_diameter_msg_pass := { cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5_ES(INITIAL_REQUEST_E) };
                var template DIAMETER_MSG mw_diameter_msg_fail := { cCR_MSG := mw_CCR_basic };
				p_monitorCompRef.start (
					f_Iot_Diameter_receive(
						{
							mw_diameter_msg_pass
                    },
                    {
                        mw_diameter_msg_fail
						},
						{0, omit},
						"TP_RX_PCRF_ECO_CCA_02 - CCR",
						p_forward_to_mtc,
						p_checkMessage 
					)
				);
				p_monitorCompRef.done;
            
                mw_diameter_msg_pass := { cCA_MSG := mw_CCA_resultCode };
                mw_diameter_msg_fail := { cCA_MSG := mw_CCA_basic};
				p_monitorCompRef.start (
					f_Iot_Diameter_receive(
						{
							mw_diameter_msg_pass
                        },
                        {
                            mw_diameter_msg_fail
						},
						{0, omit},
						"TP_RX_PCRF_ECO_CCA_01 - CCA",
						p_forward_to_mtc,
						p_checkMessage 
					)
				);
				p_monitorCompRef.done;
			}
		} // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_02
		
		/**
		 * Starts monitor component behavior for TP_GX_PCRF_ECO_CCA_02
		 * @param p_monitorCompRef Reference to monitor component
@@ -1341,7 +1385,7 @@ group g_PCRF {
				);
				p_monitorCompRef.done;
			}
		} // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_02
		} // End of function f_mtc_check_TP_GX_PCRF_EMC_CCA_01
    } //end group ES
} // end group g_PCRF

+0 −7
Original line number Diff line number Diff line
@@ -2,13 +2,6 @@ module LibDiameter_EncdecDeclarations {

    //LibDiameter
    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_Types_Base_AVPs all;
    import from LibDiameter_Types_Gx_AVPs all;
    import from LibDiameter_Types_Rx_AVPs all;
    import from LibDiameter_Types_S6a_AVPs all;
    import from LibDiameter_Types_S9_AVPs all;
    import from LibDiameter_Types_CxDx_AVPs all;
    import from LibDiameter_Types_RfRo_AVPs all;

    external function fx_enc_CER_MSG(in CER_MSG p_CER_MSG) return bitstring
        with {extension "prototype(convert) encode(DIAMETERCodec)"}
+5 −3
Original line number Diff line number Diff line
@@ -15,9 +15,9 @@ module LibDiameter_Types_Base_AVPs {
    import from LibCommon_DataStrings all;
    
    // LibDiameter
    import from LibDiameter_Types_RfRo_AVPs all;
    import from LibDiameter_Types_Gx_AVPs all;
    import from LibDiameter_Types_CxDx_AVPs all;
    // import from LibDiameter_Types_RfRo_AVPs all;
    // import from LibDiameter_Types_Gx_AVPs all;
    // import from LibDiameter_Types_CxDx_AVPs all;
    
    group AVPTypes{
        group AVP_Base_Types{
@@ -3191,4 +3191,6 @@ module LibDiameter_Types_Base_AVPs {

    }// end group NumberTypes
    
} with {
    encode "DIAMETERCodec"; variant "";
} //end module LibDiameter_Types_Base_AVPs
 No newline at end of file
+4 −1
Original line number Diff line number Diff line
@@ -11,8 +11,9 @@
module LibDiameter_Types_CxDx_AVPs {
    
    import from LibCommon_BasicTypesAndValues all;
    import from LibDiameter_Types_Base_AVPs all;

    import from LibDiameter_TypesAndValues all;
    import from LibDiameter_Types_Base_AVPs all;
    
    group AVPCodeConstants {
      
@@ -510,4 +511,6 @@ module LibDiameter_Types_CxDx_AVPs {
    }//end group AVPs

    
} with {
    encode "DIAMETERCodec"; variant "";
} //end module LibDiameter_Types_Cx_Dx_AVPs
 No newline at end of file
Loading