Commit 4594b5f6 authored by Yann Garcia's avatar Yann Garcia
Browse files

Review sequence for TD_VoLTE_ECO_INT_INI_04

parent d0978364
Loading
Loading
Loading
Loading
+58 −8
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ module AtsImsIot_Emergency {
    import from AtsImsIot_TP_behavior_MW_EC all;
    import from AtsImsIot_TP_behavior_MW_EC all;
    import from AtsImsIot_TP_behavior_MW_EB all;
    import from AtsImsIot_TP_behavior_MW_EB all;
    import from AtsImsIot_TP_behavior_MM all;
    import from AtsImsIot_TP_behavior_MM all;
    import from AtsImsIot_TP_behavior_ML all;
    import from AtsImsIot_TP_behavior_IC all;
    import from AtsImsIot_TP_behavior_IC all;
    import from AtsImsIot_TP_behavior_CX all;
    import from AtsImsIot_TP_behavior_CX all;
    import from AtsImsIot_TP_behavior_GX all;
    import from AtsImsIot_TP_behavior_GX all;
@@ -642,9 +643,8 @@ module AtsImsIot_Emergency {
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_GX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
                                                              PX_SIP_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_MM_PSAP_INTERFACENAME, // E-CSCF -> PSAP
                                                              PX_SIP_MM_PSAP_INTERFACENAME, // IBCF -> PSAP
                                                              PX_SIP_ML_LRF_INTERFACENAME // E-CSCF -> LRF
                                                              PX_SIP_ML_LRF_INTERFACENAME // E-CSCF -> LRF: mlE_LTF
                                                              }))
                                                              }))
                    {
                    {
                        var SipMessage v_sip;
                        var SipMessage v_sip;
@@ -659,15 +659,65 @@ module AtsImsIot_Emergency {
                
                
                        // Preamble
                        // Preamble
                        f_mtc_userRegistration(v_ueA, v_userInfoA); 
                        f_mtc_userRegistration(v_ueA, v_userInfoA); 
                        if (PX_PSAP_REGISTERED) {
                            f_mtc_userRegistration(v_psap, v_infoPsap); 
                            f_mtc_userRegistration(v_psap, v_infoPsap); 
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_04();
                        } else {
                            // TODO Check OPTIONS from PSAP to E-CSCF
                        }
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_01();
                        
                        
                        // Test body
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
                        // TODO
                        
                        
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 34
                        f_mtc_check_TP_GM_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1
                        f_mtc_userCheckCallEstablished(v_psap); // Event 34
                        f_mtc_check_TP_GM_PCSCF_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip);

                        //Rx/Gx exchange after INVITE (SDP) was received at P-CSCF
                        f_mtc_check_TP_RX_PCSCF_AAR_03(vc_vxlte_monitor_components.rx);// Event 2
                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 3
                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx);  // Event 4
                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 5
                        f_mtc_check_TP_RX_PCSCF_RAA_01(vc_vxlte_monitor_components.rx);// Events 7,8
                        f_mtc_check_TP_GX_PCRF_CCA_01(vc_vxlte_monitor_components.gx); // Events 6,9

                        f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 10
                        f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwPE, -, v_sip);

                        f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mlE_LTF, -, v_sip); // Event 11
                        f_mtc_check_TP_ML_ECSCF_ECO_3xx_01(vc_vxlte_monitor_components.mlE_LTF, -, v_sip); // Event 12

                        f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwB_PSAP, true); // Event 13
                        f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip);

                        // 183 Session Progress
                        f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 183 In Progress Event 14
                        f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 15
                        f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 20
                        
                        //Rx/Gx exchange after 183(SDP) was received at P-CSCF
                        f_mtc_check_TP_RX_PCSCF_AAR_04(vc_vxlte_monitor_components.rx);// Event 14
                        f_mtc_check_TP_GX_PCRF_RAR_01(vc_vxlte_monitor_components.gx, true); // Event 15
                        f_mtc_check_TP_GX_PGW_RAA_02(vc_vxlte_monitor_components.gx);  // Event 16
                        f_mtc_check_TP_RX_PCRF_AAA_02(vc_vxlte_monitor_components.rx); // Event 17
                        
                        f_mtc_check_TP_MM_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwB_PSAP); // 180 Ringing – Event 22
                        f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 23
                        f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 24
                        
                        f_mtc_userCheckRinging(v_psap); // Event 21
                        f_mtc_userCheckPeerIsRinging(v_ueA); // Event 21
                        f_mtc_userAnswerCall(v_psap); // Event 28
                        
                        f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwB_PSAP, -, v_sip); // 200 OK Event 25
                        f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 26
                        f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 27

                        f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 28 
                        f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 29
                        f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwB_PSAP); // ACK – Event 30

                        f_mtc_userCheckCallEstablished(v_ueA); // Event 31
                        f_mtc_userCheckCallEstablished(v_psap); // Event 31
                        
                        
                        // Postamble
                        // Postamble
                        f_mtc_EndCall(v_ueA);
                        f_mtc_EndCall(v_ueA);
+142 −0
Original line number Original line Diff line number Diff line
/*
 *  @author     TTF T010
 *  @version    $Id$
 *  @desc       This module provides the TP behaviour functions at ML interface
 */
module AtsImsIot_TP_behavior_ML {

   // LibIms
    import from LibIms_Templates all;
    import from LibIms_UpperTester all;
    // LibIot
    import from LibIot_TypesAndValues all;
    import from LibIot_Functions all;
    import from LibIot_TestInterface all;
    import from LibIot_PIXITS all;
    // LibSip
    import from LibSip_SIPTypesAndValues all;
    import from LibSip_Templates all;
    import from LibSip_Common all;
    import from LibSip_SDPTypes all;
    // LibMsrp
    import from LibMsrp_TypesAndValues all;
    import from LibMsrp_Functions all;
    import from LibMsrp_Templates all;
    // AtsImsIot
    import from AtsImsIot_TestSystem all;
    import from AtsImsIot_Templates_MW all;
    import from AtsImsIot_Templates all;
    import from AtsImsIot_TypesAndValues all;
    import from AtsImsIot_Functions all;

    group imsInvite {
        
        /**
         * @desc "Verify that the E-CSCF successfully processes an initial INVITE from the P-CSCF and routes the request to the LRF."
        * Reference 
        *     "ETSI TS 124 229 [1], Clauses 5.11.3"
        * Config Id CF_VxLTE_INT
        * PICS Selection NONE
        * Initial conditions with {
        *     the IMS_E_CSCF entity supportsRoutingTo the IMS_LRF
        * }
        * Expected behaviour
        *     ensure that {
        *         when {
        *             the IMS_E_CSCF entity receives an INVITE containing
        *                 From indicating value PX_UE_A_SIP_URI,
        *                 To indicating value PX_SIP_EMERGENCY_SERVICE_URN,
        *                 CallId indicating value PX_UE_A_CALLID,
        *                 Via indicating value PX_P_CSCF_A_VIA,
        *                 Route indicating value PX_E_CSCF_SERVICE_ROUTE, // 5.2.10.3 1B) option is assumed
        *                 PAssertedIdentity,
        *                 MessageBody;
        *             from the IMS_P_CSCF_A entity
        *         }
        *         then {
        *             the IMS_E_CSCF entity sends an INVITE containing
        *                 From indicating value PX_UE_A_SIP_URI,
        *                 To indicating value PX_SIP_EMERGENCY_SERVICE_URN,
        *                 CallId indicating value PX_UE_A_CALLID,
        *                 Via indicating value PX_E_CSCF_VIA,
        *                 Route indicating value PX_LRF_SERVICE_ROUTE,
        *                 PChargingVector containing
        *                    not term_ioi_parameter,
        *                    orig_ioi_parameter
        *                        indicating value "Operator Identifier Of ImsA";,
        *                 MessageBody;
        *              to the IMS_LRF entity
        *         }
        *     }
        */
        function f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01(
                                                       in SipInterfaceMonitor p_monitorCompRef,
                                                       in boolean p_checkMessage := false,
                                                       out SipMessage p_sip
                                                       ) runs on ImsTestCoordinator {
            if (isvalue(p_monitorCompRef)) {
                var ImsUserInfo v_userInfoA := f_getTelUserId(PX_EUT_A_EMERGENCY);
                var ImsUserInfo v_psapInfo  := f_getSipUserId(PX_PSAP);
                
                // Check the INVITE
                p_monitorCompRef.start(
                                       f_Iot_Sip_receive(
                                                        { mw_SipRequest(mw_TP_ML_ECSCF_INVITE_01(
                                                                                                 -, // FIXME Set expected value
                                                                                                 (
                                                                                                   mw_From_NameAddr_SipUrl({quotedString:=v_userInfoB.publicId}, v_userInfoB.publicId, v_userInfoB.domain),
                                                                                                   mw_From_AddrUnion_TelUrl(v_userInfoB.publicId)
                                                                                                 ),
                                                                                                 (
                                                                                                   mw_To_NameAddr_SipUrl({quotedString:=v_userInfoA.publicId}, v_userInfoA.publicId/*, v_userInfoA.domain*/),
                                                                                                   mw_To_AddrUnion_TelUrl(-)//v_userInfoA.publicId
                                                                                                 )
                                                                                                 ))
                                                        },
                                                        { mw_SipRequest(mw_INVITE_Request_Base) },
                                                        {0, omit},
                                                        "TP_ML_ECSCF_ECO_INVITE_01 - Request",
                                                        true,
                                                        p_checkMessage
                                                        )
                                       );
                p_monitorCompRef.done;
                // Retrieve messge
                f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
                log("##### p_sip: ", p_sip);
            }
        } // End of function f_mtc_check_TP_ML_ECSCF_ECO_INVITE_01

    } // End of group imsInvite

    group ims3xxx {
        
        function f_mtc_check_TP_ML_ECSCF_ECO_3xx_01(
                                                    in SipInterfaceMonitor p_monitorCompRef,
                                                    in boolean p_checkMessage := false,
                                                    in SipMessage p_sip
                                                    ) runs on ImsTestCoordinator {
            if (isvalue(p_monitorCompRef)) {
                // Check the 183 SESSION_PROGRESS
                p_monitorCompRef.start(
                                       f_Iot_Sip_receive(
                                                         { mw_SipResponse(mw_TP_ML_ECSCF_3XX_Base_01(
                                                                                                     p_sip.request.msgHeader.cSeq,
                                                                                                     p_sip.request.msgHeader.fromField,
                                                                                                     p_sip.request.msgHeader.toField
                                                                                                     )) 
                                                         },
                                                         { mw_SipResponse(mdw_3XX_Base) },
                                                         { 0, omit },
                                                         "TP_ML_ECSCF_ECO_3xxx_01",
                                                         false,
                                                         p_checkMessage
                                                         )
                                        );
                p_monitorCompRef.done;
            }
        } // End of function f_mtc_check_TP_ML_ECSCF_ECO_3xx_01

    } // End of group ims183SessionProgress
    
} // End of module AtsImsIot_TP_behavior_ML
 No newline at end of file
+7 −0
Original line number Original line Diff line number Diff line
@@ -1920,6 +1920,13 @@ module AtsImsIot_Templates {
        messageBody := *,
        messageBody := *,
        payload    := *
        payload    := *
        }
        }
  template Response mdw_3XX_Base modifies m_Response_Dummy :=
  {
        statusLine := {c_sipNameVersion, (300..399), ?},
        msgHeader := ?,
        messageBody := *,
        payload    := *
  }
  template Response mw_401Unauthorized_Base  modifies m_Response_Dummy :=
  template Response mw_401Unauthorized_Base  modifies m_Response_Dummy :=
        {
        {
        statusLine := {c_sipNameVersion, 401, ?},
        statusLine := {c_sipNameVersion, 401, ?},
+83 −0
Original line number Original line Diff line number Diff line
/*
 *  @author     STF 574
 *  @version    $Id$
 *  @desc       This module provides TP related templates used at ML interface
 */
module AtsImsIot_Templates_ML {
    
    // LibCommon
    //import from LibCommon_BasicTypesAndValues all;
    //import from LibCommon_VerdictControl all;
    
    // libSip
    import from LibSip_SIPTypesAndValues all;
    import from LibSip_Templates all;
    import from LibSip_Common all;
    
    // LibIms
    import from LibIms_Templates all;
    
    //import from LibMsrp_TypesAndValues all;
    
    // LibIot
    //import from LibIot_TypesAndValues all;
    import from LibIot_PIXITS all;
    
    // AtsImsIot
    //import from AtsImsIot_TypesAndValues all;
    import from AtsImsIot_PIXITS all;
    import from AtsImsIot_Templates all;
    
    /**
    * @desc INVITE Request checking TP_ML_PSAP_INVITE_01
    */
    template(present)  INVITE_Request mw_TP_ML_ECSCF_INVITE_01 (template (present) SipUrl p_IBCF_SIP_URI := ?,
                                                                template (present) From p_from := ?,
                                                                template (present) To p_to := ?)
    modifies mw_INVITE_Request_Base := {
        msgHeader := {
            fromField := p_from,
            toField := p_to,
            route := ({
                fieldName := ROUTE_E,
                routeBody := {
                    *, 
                    complement(mw_routeBody(p_IBCF_SIP_URI)),
                    *
                }
            }, omit),
            recordRoute := {
                fieldName := RECORD_ROUTE_E,
                routeBody := {mw_routeBody(p_IBCF_SIP_URI), *}             
            },        
            pChargingVector := {
                fieldName := P_CHARGING_VECTOR_E,
                chargeParams := {
                    *,
//                     {id := "icid-value", paramValue := ?},
                    *,
                    {id := "orig-ioi", paramValue := ?},
                    *,
//                     complement({id := "term-ioi", paramValue := ?}),
                    *,
                    complement({id := "access-network-charging-info", paramValue := ?}),
                    *
                }
            },
        pAccessNetworkInfo := omit
        }
    }

    template (present) Response mw_TP_ML_ECSCF_3XX_Base_01(
                                                           template (present) CSeq p_cSeq := ?,
                                                           template (present) From p_from := ?,
                                                           template (present) To p_to := ?
                                                           ) modifies mdw_3XX_Base := {
        msgHeader := {
            cSeq      := p_cSeq,
            fromField := p_from,
            toField   := p_to
        }
    } // End of template mw_TP_ML_ECSCF_3XX_Base_01

} // End of module AtsImsIot_Templates_ML