Commit b47cfd06 authored by barakatr's avatar barakatr
Browse files

Add TD_VoLTE_ECO_INT_INI_09 and ISC behavior

parent 701b40be
Loading
Loading
Loading
Loading
+44 −9
Original line number Diff line number Diff line
@@ -1286,14 +1286,16 @@ module AtsImsIot_Emergency {


                /**
                 * @desc    
                 * @desc    To demonstrate the establishment of dedicated bearers at the originating EPC due to SIP emergency session establishment over AS with non-emergency registration.
                 *          PSAP is located in the IM CN subsystem of IMS A.
                 *    
                 * @see ETSI TS 103 795-2 Clause 5.3.1.10    UE calling PSAP over AS with non-emergency registration
                 */
                testcase TD_VoLTE_ECO_INT_INI_09() runs on ImsTestCoordinator system IotSystemInterface {

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

                    f_setVxLteMonIterfacesAvailability();
@@ -1303,7 +1305,8 @@ module AtsImsIot_Emergency {
                                                              PX_DIAMETER_RX_INTERFACENAME,
                                                              PX_SIP_MW_PE_INTERFACENAME,
                                                              PX_SIP_MW_EB_INTERFACENAME, // E-CSCF -> IBCF
                                                              PX_SIP_MM_B_PSAP_INTERFACENAME
                                                              PX_SIP_MM_B_PSAP_INTERFACENAME,
															  PX_SIP_ISC_INTERFACENAME
                                                              }))
                    {
                        var SipMessage v_sip;
@@ -1324,20 +1327,52 @@ module AtsImsIot_Emergency {
                            // TODO Check OPTIONS from PSAP to E-CSCF
                        }
                        f_mtc_check_precond_TD_VoLTE_ECO_INT_INI_09_01();
                        f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
						 
                        // Test body
                        //f_mtc_userInitiateCall (v_ueA, v_userTelInfoB);
                        // TODO
 						f_mtc_userInitiateCall (v_ueA, v_infoPsap); // Event 1
 						
                        f_mtc_userCheckCallEstablished(v_ueA); // Event 34
                        f_mtc_userCheckCallEstablished(v_psap); // Event 34
 						// Session INVITE
 						f_mtc_check_TP_ISC_SCSCF_ECO_INVITE_01(vc_vxlte_monitor_components.isc, -, v_sip); // INVITE Event 2  //TODO
 						f_mtc_check_TP_GM_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.isc, -, v_sip);
 						
						f_mtc_check_TP_MW_PCSCF_ECO_INVITE_02(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 3
						f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwIE, -, v_sip);
						
						f_mtc_check_TP_MM_ECSCF_ECO_INVITE_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // Event 4
						f_mtc_check_TP_MW_PCSCF_ECO_100Trying_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip);

						// 183 Session Progress
						f_mtc_check_TP_MM_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // Event 5
						f_mtc_check_TP_MI_ECSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 6
						f_mtc_check_TP_ISC_SCSCF_ECO_183SESSION_PROGRESS_01(vc_vxlte_monitor_components.isc, -, v_sip); // Event 7

						// 180 Ringing
						f_mtc_check_TP_IC_IBCF_180RESP_01(vc_vxlte_monitor_components.mwS_PSAP, true); // 180 Ringing – Event 10 						
                        f_mtc_check_TP_MX_ECSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 11
                        f_mtc_check_TP_ISC_SCSCF_ECO_180RINGING_01(vc_vxlte_monitor_components.isc, -, v_sip); // Event 12

                        f_mtc_userCheckRinging(v_psap);
                        f_mtc_userCheckPeerIsRinging(v_ueA);
                        f_mtc_userAnswerCall(v_psap);

						// 200 OK
                        f_mtc_check_TP_MM_ECSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // Event 14
                        f_mtc_check_TP_MW_PCSCF_ECO_200OK_01(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 15
                        f_mtc_check_TP_ISC_SCSCF_ECO_200OK_01(vc_vxlte_monitor_components.isc, -, v_sip); // Event 16

                        f_mtc_check_TP_ISC_SCSCF_ECO_ACK_01(vc_vxlte_monitor_components.isc, -, v_sip); // Event 19 
                        f_mtc_check_TP_MW_PCSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwIE, -, v_sip); // Event 20
                        f_mtc_check_TP_MX_ECSCF_ECO_ACK_01(vc_vxlte_monitor_components.mwS_PSAP, -, v_sip); // Event 21

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

                        // 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 );
+1 −1
Original line number Diff line number Diff line
@@ -1902,7 +1902,7 @@ module AtsImsIot_TP_behavior_GM {
													   out SipMessage p_sip
													   ) runs on ImsTestCoordinator {
			 if (isvalue(p_monitorCompRef)){
				var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A_EMERGENCY);
				var ImsUserInfo v_userInfoA := f_getSipUserId(PX_EUT_A);
				var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
                
				// Check the INVITE
+241 −40
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ module AtsImsIot_TP_behavior_ISC
	import from LibSip_Common all;
    
	import from AtsImsIot_Functions all;
	import from AtsImsIot_Templates_MW all;
	import from AtsImsIot_Templates_ISC all;
	import from LibIot_PIXITS all;
	// LibSip
	import from LibSip_SDPTypes all;
@@ -44,6 +44,7 @@ module AtsImsIot_TP_behavior_ISC
    
group g_ISC {

	group imsRegistration {
	/**
		* @desc Starts monitor component behavior for TP_ISC_SCSCF_REGISTER_01
		* @param p_monitorCompRef Reference to monitor component
@@ -87,6 +88,206 @@ group g_ISC {
	    
	    	}
	    }//end f_mtc_check_TP_ISC_SCSCF_REGISTER_01
	}// end imsRegistration
    
    
	group imsInvite {
    
		/**
		 * @desc Verify that the S-CSCF successfully receives an initial emergency INVITE from a registered but not emergency registered UE.
		 * Reference 
		 *   "ETSI TS 124 229 [1], Clauses 5.7.1.14"
		 * Config Id CF_VoLTE_INT_ES
		 * PICS Selection NONE
		 * Initial conditions with {
		 *    the UE_A entity isAttachedTo the EPC_A and
		 *    the UE_A entity isRegisteredTo the IMS_A and
		 *    the UE_A entity not isEmergencyRegisteredTo the IMS_A
		 * }
		 * Expected behaviour
		 *   ensure that {
		 *       when {
		 *           the UE_A entity isRequestedToEstablishEmergencyCall
		 *       }
		 *       then {
		 *           the IMS_S_CSCF_A 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_UE_A_VIA,
		 *               Route indicating value PX_UE_A_SERVICE_ROUTE,
		 *               PPreferredIdentity, // one or two instances
		 *               MessageBody;
		 *           from the UE_A entity
		 *       }
		 *   }
		 */
		function f_mtc_check_TP_ISC_SCSCF_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_getSipUserId(PX_EUT_A);
				var ImsUserInfo v_psap := f_getSipUserId(PX_PSAP);
                
				// Check the INVITE
				p_monitorCompRef.start(
									   f_Iot_Sip_receive(
														{ 
															mw_SipRequest(mw_TP_ISC_SCSCF_ECO_INVITE_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_SipRequest(mw_INVITE_Request_Base) },
														{0, omit},
														"TP_GM_PCSCF_ECO_INVITE_01 - Request", //TODO
														true,
														p_checkMessage
														)
									   );
				p_monitorCompRef.done;
				// Retrieve messge
				f_getSipMsgFromMonitor(p_monitorCompRef, p_sip);
			 }
		} // End of function f_mtc_check_TP_ISC_SCSCF_INVITE_01
		
	}

	group ims183SessionProgress {
        
		function f_mtc_check_TP_ISC_SCSCF_ECO_183SESSION_PROGRESS_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_ISC_SCSCF_183SessionProgress_01(
																											   p_sip.request.msgHeader.cSeq,
																											   p_sip.request.msgHeader.fromField,
																											   p_sip.request.msgHeader.toField
																											   )) 
														 },
														 { mw_SipResponse(mw_183SessionProgress_Base) },
														 { 0, omit },
														 "TP_ISC_SCSCF_ECO_183SESSION_PROGRESS_01",
														 false,
														 p_checkMessage
														 )
										);
				p_monitorCompRef.done;
			}
		} // End of function f_mtc_check_TP_ISC_SCSCF_ECO_183SESSION_PROGRESS_01

	} // End of group ims183SessionProgress

	group ims180Ringing {
        
		function f_mtc_check_TP_ISC_SCSCF_ECO_180RINGING_01(
														   in SipInterfaceMonitor p_monitorCompRef,
														   in boolean p_checkMessage := false,
														   in SipMessage p_sip
														   ) runs on ImsTestCoordinator {
			if (isvalue(p_monitorCompRef)) {
				// Check the 180 RINGING
				p_monitorCompRef.start(
									   f_Iot_Sip_receive(
														 { mw_SipResponse(mw_TP_ISC_SCSCF_180Ringing_01(
																									   p_sip.request.msgHeader.cSeq,
																									   p_sip.request.msgHeader.fromField,
																									   mw_To_NameAddr_TelUrl(
																															 -,
																															 p_sip.request.msgHeader.toField.addressField.addrSpecUnion.components.tel.subscriber
																		  ))) 
														 },
														 { mw_SipResponse(mw_180Ringing_Base) },
														 { 0, omit },
														 "TP_ISC_SCSCF_180RINGING_01",
														 false,
														 p_checkMessage
														 )
										);
				p_monitorCompRef.done;
			}
		} // End of function f_mtc_check_TP_ISC_SCSCF_ECO_180RINGING_01
        
	} // End of group ims180Ringing

	group ims200Ok {
        
		function f_mtc_check_TP_ISC_SCSCF_ECO_200OK_01(
													  in SipInterfaceMonitor p_monitorCompRef,
													  in boolean p_checkMessage := false,
													  in SipMessage p_sip
													  ) runs on ImsTestCoordinator {
			if (isvalue(p_monitorCompRef)) {
				var ImsUserInfo v_userInfoB := f_getSipUserId(PX_EUT_B);
                
				// Check the 200 OK
				p_monitorCompRef.start(
									   f_Iot_Sip_receive(
														 { mw_SipResponse(mw_200OK(
																				   p_sip.request.msgHeader.cSeq,
																				   p_sip.request.msgHeader.callId,
																				   p_sip.request.msgHeader.fromField,
																				   (
																					  mw_To_NameAddr_TelUrl({quotedString:=f_getSipUserId(PX_EUT_B).publicId}),
																					  mw_To_AddrUnion_TelUrl(f_getTelUserId(PX_EUT_B).publicId),
																					  p_sip.request.msgHeader.toField
																					)
																				   )) 
														 },
														 { mw_SipResponse(mw_200OK_Base) },
														 { 0, omit },
														 "TP_ISC_SCSCF_ECO_200OK_01",
														 false,
														 p_checkMessage
														 )
										);
				p_monitorCompRef.done;
                
			}
		} // End of function f_mtc_check_TP_ISC_SCSCF_ECO_200OK_01
        
	} // End of group ims200Ok
	
   group imsAck {
        
		function f_mtc_check_TP_ISC_SCSCF_ECO_ACK_01(
												   in SipInterfaceMonitor p_monitorCompRef,
												   in boolean p_checkMessage := false,
												   in SipMessage p_sip
												   ) runs on ImsTestCoordinator {
			if (isvalue(p_monitorCompRef)) {
				// Check the ACK
				p_monitorCompRef.start(
									   f_Iot_Sip_receive(
														 { mw_SipRequest(mw_TP_ISC_SCSCF_ACK_01(
																							   p_sip.request.msgHeader.callId,
																							   p_sip.request.msgHeader.cSeq,
																							   -, // FIXME To be set
																							   p_sip.request.msgHeader.fromField,
																							   p_sip.request.msgHeader.toField
																							   )) 
														 },
														 { mw_SipRequest(mw_ACK_Request_Base) },
														 { 0, omit },
														 "TP_ISC_SCSCF_ECO_ACK_01 - Request",
														 false,
														 p_checkMessage
														 )
										);
				p_monitorCompRef.done;
			}
		} // End of function f_mtc_check_TP_ISC_SCSCF_ECO_ACK_01
        
	} // End of group imsAck


} // end of g_ISC

+816 −0

File added.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ module AtsImsIot_TestSystem {
			SipInterfaceMonitor mwIE    optional,// Mw interface at I-CSCF/S-CSCF to E-CSCF
			SipInterfaceMonitor mwPB    optional,// Mw interface at P-CSCF/IBCF    
			SipInterfaceMonitor mwIB    optional,// Mw interface at I-CSCF/IBCF 
			SipInterfaceMonitor isc     optional, 
			SipInterfaceMonitor isc     optional,// ISC interface at AS to S-CSCF 
			DiameterInterfaceMonitor cxIH   optional, 
			DiameterInterfaceMonitor cxSH   optional,
			DiameterInterfaceMonitor gx     optional,