Commit a20b8b24 authored by barakatr's avatar barakatr
Browse files

ADD TD_VoLTE_NGC_INT_INF_01_0X and corresponding INFO functions

parent b47cfd06
Loading
Loading
Loading
Loading
+343 −10
Original line number Diff line number Diff line
@@ -1329,9 +1329,8 @@ module AtsImsIot_Emergency {
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_09_01();
						 
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
                        // TODO
 						f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
                        //f_mtc_userInitiateCall (v_ueA, v_infoPsap); 
                        action("UE A needs to trigger an emergency call"); // Event 1
 						
 						// Session INVITE
 						f_mtc_check_TP_ISC_SCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.isc, -, v_sip); // INVITE Event 2  //TODO
@@ -2992,6 +2991,342 @@ module AtsImsIot_Emergency {

        } // End of group EmergencySessionEmergencyBearerOperations

		/**
		 * @see ETSI TS 103 795-2 Clause 5.3.4    NG eCall tests
		 */
		group NGeCallTests {

			   /**
				 * @desc To demonstrate the establishment of IMS emergency call of the (automatically or manually) initiated eCall type of emergency service within an emergency registration
				 * @see ETSI TS 103 795-2 Clause 5.3.4.1    MSD sent during NG eCall establishment
				 */
				testcase TD_VoLTE_NGC_INT_INI_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_user_up ( v_psap );
						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_TD_VoLTE_NGC_INT_INI_01();

						// Test body
						f_mtc_check_TP_GM_PCSCF_NGC_INVITE_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 1
						f_mtc_check_TP_GM_PCSCF_ECO_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_NGC_INVITE_01(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_MM_ECSCF_NGC_INVITE_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // Event 11
						f_mtc_check_TP_MM_ECSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip);

						// 183 Session Progress
						f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 183 In Progress Event 12
						f_mtc_check_TP_MW_PCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 13
						f_mtc_check_TP_GM_PCSCF_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 18

						//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.mmB_PSAP, -, v_sip); // 180 Ringing – Event 20
						f_mtc_check_TP_MW_PCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 21
						f_mtc_check_TP_GM_PCSCF_180RINGING_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 22

						f_mtc_userCheckRinging(v_psap); // Event 19
						f_mtc_userCheckPeerIsRinging(v_ueA); // Event 19
						f_mtc_userAnswerCall(v_psap); // Event 26

						f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // 200 OK Event 23
						f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 24
						f_mtc_check_TP_GM_PCSCF_200OK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 25

						f_mtc_check_TP_GM_PCSCF_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // ACK Event 26 
						f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // Event 27
						f_mtc_check_TP_MM_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mmB_PSAP, -, v_sip); // ACK – Event 28

						f_mtc_userCheckCallEstablished(v_ueA); // Event 29
						f_mtc_userCheckCallEstablished(v_psap); // Event 29

						// Postamble
						f_mtc_EndCall(v_ueA);
						f_PO_user_home_deregistration(v_ueA);
						f_PO_user_home_deregistration(v_psap);
						//f_cf_int_call_down(v_config);

						//unmap/disconnect component ports
						f_cf_user_down ( v_psap );
						f_cf_user_down ( v_ueA );
						f_cf_VxLteMonitor_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_NGC_INT_INI_01

				group f_TD_VoLTE_NGC_INT_INI_01 {

					function f_mtc_check_precond_TD_VoLTE_NGC_INT_INI_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_NGC_INT_INI_01

				} // End of group f_TD_VoLTE_NGC_INT_INI_01
				
				
			   /**
				 * @desc To demonstrate the if an IMS emergency call of the (automatically or manually) initiated eCall type of emergency service has been established,
				 *       the attempt by the PSAP to request transfer of an updated MSD shall be answered.
				 * @see ETSI TS 103 795-2 Clause 5.3.4.1    MSD update during NG eCall
				 */
				testcase TD_VoLTE_NGC_INT_INF_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,
															  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_user_up ( v_psap );
						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_userInitiateCall (v_ueA, v_infoPsap); // Event 1
						f_mtc_check_precond_TD_VoLTE_NGC_INT_INF_01();

						// Test body
						
						//Send INFO
						f_mtc_check_TP_MM_ECSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 1
						f_mtc_check_TP_MW_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 6
						f_mtc_check_TP_GM_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 7
						
						//Receive INFO 
						
						f_mtc_check_TP_GM_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 8
						f_mtc_check_TP_MW_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 9
						f_mtc_check_TP_MM_ECSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 10
						

						// Postamble
						f_mtc_EndCall(v_ueA);
						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();
					}else{
						//log...
						setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
					}
					f_cf_adapter_down ( );

				} // End of TC TD_VoLTE_NGC_INT_INF_01_01
				
			testcase TD_VoLTE_NGC_INT_INF_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,
															  PX_SIP_MW_EB_INTERFACENAME // E-CSCCF -> IBCF
															  }))
					{
						var SipMessage v_sip;

						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();

						// 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_userInitiateCall (v_ueA, v_infoPsap); // Event 1
						f_mtc_check_precond_TD_VoLTE_NGC_INT_INF_01();

						// Test body
						
						//Send INFO
						f_mtc_check_TP_MX_ECSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 3
						f_mtc_check_TP_MW_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 6 
						f_mtc_check_TP_GM_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 7
						
						//Receive INFO 
						
						f_mtc_check_TP_GM_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 8  TODO
						f_mtc_check_TP_MW_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 9  TODO
						f_mtc_check_TP_MX_ECSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 11
						

						// Postamble
						f_mtc_EndCall(v_ueA);
						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();
					}else{
						//log...
						setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
					}
					f_cf_adapter_down ( );

				} // End of TC TD_VoLTE_NGC_INT_INF_01_02
				
				testcase TD_VoLTE_NGC_INT_INF_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,
															  PX_SIP_MI_EB_INTERFACENAME // E-CSCCF -> BGCF
															  }))
					{
						var SipMessage v_sip;

						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();

						// 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_userInitiateCall (v_ueA, v_infoPsap); // Event 1
						f_mtc_check_precond_TD_VoLTE_NGC_INT_INF_01();

						// Test body
						
						//Send INFO
						f_mtc_check_TP_MI_ECSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 5
						f_mtc_check_TP_MW_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 6 
						f_mtc_check_TP_GM_PCSCF_NGC_INFO_01(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 7
						
						//Receive INFO 
						
						f_mtc_check_TP_GM_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.gmA, -, v_sip); // INFO Event 8  TODO
						f_mtc_check_TP_MW_PCSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwPE, -, v_sip); // INFO Event 9  TODO
						f_mtc_check_TP_MI_ECSCF_NGC_INFO_02(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // INFO Event 13
						

						// Postamble
						f_mtc_EndCall(v_ueA);
						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();
					}else{
						//log...
						setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
					}
					f_cf_adapter_down ( );

				} // End of TC TD_VoLTE_NGC_INT_INF_01_03

				group f_TD_VoLTE_NGC_INT_INF_01 {

					function f_mtc_check_precond_TD_VoLTE_NGC_INT_INF_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_NGC_INT_INI_01

				} // End of group f_TD_VoLTE_NGC_INT_INF_01_01
		}


        /**
         * @see ETSI TS 103 795-2 Clause 5.5    Emergency Network Detachment
         */
@@ -3785,9 +4120,7 @@ module AtsImsIot_Emergency {

					f_setVxLteMonIterfacesAvailability();
					//Check required monitor interfaces due to TD
					if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME,
															  PX_DIAMETER_GX_INTERFACENAME,
															  PX_DIAMETER_RX_INTERFACENAME
					if (f_checkVxLteRequiredMonitorInterface({PX_SIP_GMA_INTERFACENAME
															  }))
					{
						var SipMessage v_sip;
@@ -3806,12 +4139,15 @@ module AtsImsIot_Emergency {
						f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile

						// Test body
						// UE A requests emergency session initiation  // Event 1
						f_mtc_check_TP_GM_PCSCF_ECO_INVITE_05(vc_vxlte_monitor_components.gmA, -, v_sip); // INVITE Event 2
						f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.gmA, -, v_sip);

						// 380 (Alternative Service)
						f_mtc_check_TP_GM_PCSCF_ECO_380ALTSRV_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 3
						f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 4
						
						// ACK
						f_mtc_check_TP_GM_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.gmA, -, v_sip); // Event 6

						//unmap/disconnect component ports
						f_cf_user_down ( v_ueA );
@@ -3944,9 +4280,6 @@ module AtsImsIot_Emergency {

				} // End of group f_TD_VoLTE_ECO_RMI_INI_02
				
				
				
				
			} // End of group RoamingUECallingPSAPWithNonEmergencyRegistration
				
        } // End of group EmergencySessionEstablishmentRoaming
+229 −1

File changed.

Preview size limit exceeded, changes collapsed.

+152 −0
Original line number Diff line number Diff line
@@ -754,4 +754,156 @@ module AtsImsIot_TP_behavior_MI {

    } // End of group imsRequestTermination

	group imsINFO{  
		
		/**
		 * @desc Verify that the E-CSCF sends an INFO request demanding a transfer of updated MSD.
		 * 
		 * Reference 
		 *     "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
		 * Config Id CF_VoLTE_INT_ES
		 * PICS Selection NONE
		 * Initial conditions with {
		 *     the UE_A entity isEmergencyAttachedTo the EPC_A and
		 *     the UE_A entity isEmergencyRegisteredTo the IMS_A and
		 *     the UE_A entity isEmergencyRegisteredTo the IMS_A and
		 *     the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
		 *  }
		 * Expected behaviour
		 *     ensure that { 
				when { 
					the IMS_P_CSCF_A entity receives a INFO containing "Request transfer of updated MSD";
					from the IMS_E_CSCF entity
				}
				then {
					the IMS_P_CSCF_A entity sends a INFO containing
						From indicating value PX_PSAP_SIP_URI,
						To indicating value PX_UE_A_SIP_URI,
						CallId indicating value PX_PSAP_CALLID,
						Via indicating value PX_PSAP_VIA,
						Route indicating value PX_PSAP_SERVICE_ROUTE,
						InfoPackage indicating value "EmergencyCallData.eCall.MSD",
						ContentDisposition indicating value "Info-Package",
						MessageBody containing
						   MIME indicating value "application/EmergencyCallData.Control+xml", // MIME may contain additional parts e.g., sdp, xml
						   request containing
							  action indicating value "send-data",
							  datatype indicating value "eCall.MSD";,
						   ContentDisposition indicating value "By-Reference";; 
					to the UE_A entity
				}
			}

		 */
		function f_mtc_check_TP_MI_ECSCF_NGC_INFO_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_getSipUserId(PX_EUT_A_EMERGENCY);
				var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
                
				// Check the INVITE
				p_monitorCompRef.start(
									   f_Iot_Sip_receive(
														{ 
															mw_SipRequest(mw_TP_MI_ECSCF_NGC_INFO_01(
																									   -, // FIXME Set expected value
																									   mw_From_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
																									   mw_To_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
																									   -, 
																									   -,
																									   mw_PPreferredID,
																									   mw_accept({mw_acceptBody("application/EmergencyCallData.Control+xml")}),
																									   mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
																									   ))
														},
														{ mw_SipRequest(mw_INFO_Request_Base) },
														{0, omit},
														"TP_MI_ECSCF_NGC_INFO_01 - Request",
														true,
														p_checkMessage
														)
									   );
				p_monitorCompRef.done;
				// Retrieve messge
				f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
			 }
		} // End of function f_mtc_check_TP_MI_ECSCF_NGC_INFO_01
		
		/**
		 * @desc Verify that the E-CSCF successfully receives an INFO from the UE in an established eCall type emergency call that has been requested to transfer an updated MSD.
		 * 
		 * Reference 
		 *     "ETSI TS 124 229 [1], Clauses 5.1.6.11.3"
		 * Config Id CF_VxLTE_INT
		 * PICS Selection NONE
		 * Initial conditions with {
		 *     the UE_A entity isEmergencyAttachedTo the EPC_A and
		 *     the UE_A entity isEmergencyRegisteredTo the IMS_A and
		 *     the UE_A entity previouslyEstablishedEmergencyCallWith the PSAP
		 *  }
		 * Expected behaviour
		 *     ensure that {
		 *         when {
		 *             the UE_A entity isRequestedToTransferUpdatedMSD
		 *           // UE_A has received an INFO request as described in TP_MW_PCSCF_NGC_INFO_01
		 *         }
		 *         then {
		 *           the IMS_P_CSCF_A entity receives an INFO containing
		 *               From indicating value PX_UE_A_SIP_URI,
		 *               To indicating value PX_SIP_ECALL_EMERGENCY_SERVICE_URN, // "urn:service:sos.ecall.manual" or "urn:service:sos.ecall.automatic"
		 *               CallId indicating value PX_UE_A_CALLID,
		 *               Via indicating value PX_UE_A_VIA,
		 *               Route indicating value PX_UE_A_SERVICE_ROUTE,
		 *               InfoPackage indicating value "EmergencyCallData.eCall.MSD",
		 *               ContentDisposition indicating value "Info-Package",
		 *               MessageBody containing
		 *                  MIME indicating value "application/EmergencyCallData.eCall.MSD", // MIME may contain additional parts e.g., sdp, xml
		 *                  // MSD not exceeding 140 bytes and encoded in binary ASN.1
		 *                  ContentDisposition indicating value "By-Reference";; 
		 *           from the UE_A entity
		 *       }
		 *     }
		 */
		function f_mtc_check_TP_MI_ECSCF_NGC_INFO_02(
													   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_getSipUserId(PX_EUT_A_EMERGENCY);
				var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
                
				// Check the INVITE
				p_monitorCompRef.start(
									   f_Iot_Sip_receive(
														{ 
															mw_SipRequest(mw_TP_MI_ECSCF_NGC_INFO_01(
																									   -, // FIXME Set expected value
																									   mw_From_AddrUnion_SipUrl(omit, v_userInfoA.publicId, v_userInfoA.domain),
																									   mw_To_AddrUnion_SipUrl(omit, v_psap.publicId, v_psap.domain),
																									   -,
																									   -,
																									   mw_PPreferredID,
																									   mw_accept({mw_acceptBody("application/EmergencyCallData.MSD")}),
																									   mw_recvInfo({mw_infoPackage_Type("EmergencyCallData.eCall.MSD")})
																									   ))
														},
														{ mw_SipRequest(mw_INFO_Request_Base) },
														{0, omit},
														"TP_MI_ECSCF_NGC_INFO_02 - Request",
														true,
														p_checkMessage
														)
									   );
				p_monitorCompRef.done;
				// Retrieve messge
				f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
			 }
		} // End of function f_mtc_check_TP_MI_ECSCF_NGC_INFO_02
		
	}// End of group imsINFO

} // End of module AtsImsIot_TP_behavior_MI
 No newline at end of file
+225 −0

File changed.

Preview size limit exceeded, changes collapsed.

+222 −0

File changed.

Preview size limit exceeded, changes collapsed.

Loading