Skip to content
AtsSccas_TCFunctions.ttcn 153 KiB
Newer Older
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;
                
				f_registrationAS(v_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
            
				f_IncCSeq(v_cSeq_s);
				f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE));
				f_SendINVITE(
							 m_sccas_invite(
											vc_requestUri,
											vc_callId, 
											p_cSeq_s, 
											vc_from, vc_to, vc_via_REG, 
											vc_contact,
											-, -, -,
											m_MBody_SDP(vc_sdp_local)
											));
				tc_wait.start;
				alt {
					[] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) {
						repeat
					}
					[] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) {
						tc_wait.stop;
						log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_wait.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}           
                
                
				f_deregistrationAS(v_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
            
			}  //End of function f_TC_ISC_SCCAS_TER_INV_01
			
		} // End of group TP_8_3_1_Distinction_of_requests_sent_to_the_SCCAS
Steffen Ludtke's avatar
Steffen Ludtke committed
    } // End of group Group_8_3
     
    group Group_9_3 {
        function f_TC_ISC_SCCAS_CPT_INV_01(in CSeq p_cSeq_s)
        runs on ImsComponent {
                
            // TODO: set correct service profiles
            LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
            f_SendINVITE(m_sccas_invite(
                    vc_requestUri,
                    vc_callId,
                    vc_cSeq,
                    vc_from,
                    vc_to,
                    vc_via_REG,
                    vc_contact,
                    omit, // template(omit) Require p_require := omit,
                    vc_route,
                    m_supported_replaces, //template(omit) Supported p_supported := omit,
                    omit //template(value) MessageBody p_mb
                )
            
            );
            f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s));
            
            
            }
Steffen Ludtke's avatar
Steffen Ludtke committed
            
		function f_TC_ISC_SCCAS_CPT_INV_02(in CSeq p_cSeq_s)
		runs on ImsComponent {
		// Local variables
		var CSeq v_cSeq_s := p_cSeq_s;
				
		// Preambule
		f_init_userprofile(c_userProfile_UE1atSUThome);
		f_initSipUrl(c_serviceProfile_EMERGENCY);
		f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
		
		// initial condition: the UE entity isRegisteredTo the IMS  
		f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
		
			LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
			f_SendINVITE(m_sccas_invite(
					vc_requestUri,
					vc_callId,
					vc_cSeq,
					vc_from,
					vc_to,
					vc_via_REG,
					vc_contact,
					omit, // template(omit) Require p_require := omit,
					vc_route,
					m_supported_replaces, 
					m_messageBody_SDP_mediaOnly
					
				)
			
			);
			f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callIdReg, p_cSeq_s));
			
			
			f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
		
		} // End of f_TC_IISC_SCCAS_CPT_INV_02
		
		function f_TC_ISC_SCCAS_CPT_RIN_01(in CSeq p_cSeq_s)
		runs on ImsComponent {
		// Local variables
		var CSeq v_cSeq_s := p_cSeq_s;
		
		// Preambule
		f_init_userprofile(c_userProfile_UE1atSUThome);
		f_initSipUrl(c_serviceProfile_EMERGENCY);
		f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				
		// initial condition: the UE entity isRegisteredTo the IMS  
		f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
		
		} // End of f_TC_IISC_SCCAS_CPT_RIN_01
		
		function f_TC_ISC_SCCAS_CPT_ACK_01(in CSeq p_cSeq_s)
		runs on ImsComponent {
		// Local variables
		var CSeq v_cSeq_s := p_cSeq_s;
			
		// Preambule
		f_init_userprofile(c_userProfile_UE1atSUThome);
		f_initSipUrl(c_serviceProfile_EMERGENCY);
		f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				
		// initial condition: the UE entity isRegisteredTo the IMS  
		f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
			
		} // End of f_TC_IISC_SCCAS_CPT_ACK_01
		
		function f_TC_ISC_SCCAS_CPT_INV_03(in CSeq p_cSeq_s)
		runs on ImsComponent {
		// Local variables
		var CSeq v_cSeq_s := p_cSeq_s;
		
		// Preambule
		f_init_userprofile(c_userProfile_UE1atSUThome);
		f_initSipUrl(c_serviceProfile_EMERGENCY);
		f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				
		// initial condition: the UE entity isRegisteredTo the IMS  
		f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				// TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy 
			
			// STEP: send invite	
			LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
			f_SendINVITE(m_sccas_invite_contact(
Steffen Ludtke's avatar
Steffen Ludtke committed
					vc_requestUri,
					vc_callId,
					vc_cSeq,
					vc_from,
					vc_to,
					vc_via_REG,
					m_contact_g3gppSrvccAlertingFeature, // TODO: correct use auf g3gppSrvccAlertingFeatureCapabilityIndicator
					omit, // template(omit) Require p_require := omit,
					vc_route,
					omit, 
					m_messageBody_SDP_mediaOnly
Steffen Ludtke's avatar
Steffen Ludtke committed
					
				)
			
			);
			f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppMidcallFeature));
		
		} // End of f_TC_ISC_SCCAS_CPT_INV_03
		
		function f_TC_ISC_SCCAS_CPT_INV_04(in CSeq p_cSeq_s)
		runs on ImsComponent {
		// Local variables
		var CSeq v_cSeq_s := p_cSeq_s;
		
		// Preambule
		f_init_userprofile(c_userProfile_UE1atSUThome);
		f_initSipUrl(c_serviceProfile_EMERGENCY);
		f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				
		// initial condition: the UE entity isRegisteredTo the IMS  
		f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				// TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy 
			
			// STEP: send invite	
			LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
			f_SendINVITE(m_sccas_invite_contact(
					vc_requestUri,
					vc_callId,
					vc_cSeq,
					vc_from,
					vc_to,
					vc_via_REG,
					m_contact_g3gppDrvccAlertingFeature, // TODO: correct use auf g3gppDrvccAlertingFeature
					omit, // template(omit) Require p_require := omit,
					vc_route,
					m_supported_replaces, 
					omit
					
				)
			
			);
			f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppDrvccAlertingFeature));
		
		} // End of f_TC_ISC_SCCAS_CPT_INV_04
		
		
		function f_TC_ISC_SCCAS_CPT_INV_05(in CSeq p_cSeq_s)
		runs on ImsComponent {
		// Local variables
		var CSeq v_cSeq_s := p_cSeq_s;
		
		// Preambule
		f_init_userprofile(c_userProfile_UE1atSUThome);
		f_initSipUrl(c_serviceProfile_EMERGENCY);
		f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				
		// initial condition: the UE entity isRegisteredTo the IMS  
		f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
				
				// TODO: initial condition (PICS?): SCC AS supports the MSC Server assisted mid-call feature according to operator policy 
			
			// STEP: send invite	
			LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
			f_SendINVITE(m_sccas_invite_contact(
					vc_requestUri,
					vc_callId,
					vc_cSeq,
					vc_from,
					vc_to,
					vc_via_REG,
					m_contact_g3gppDrvccOrigPreAlertingFeature, // TODO: correct use auf g3gppDrvccOrigPreAlertingFeature
					omit, // template(omit) Require p_require := omit,
					vc_route,
					m_supported_replaces, 
					omit // TODO
					
				)
			
			);
			
 			tc_ack.start;
				alt {
					[] SIPP.receive(mw_UPDATE_Request_ContactChange(
							vc_callId, 
							mw_contact_sourceLegAtCreation, 
							mw_contentType_appclication_sdp, 
							mw_sdpmessageBody)) {
						tc_ack.stop;
Steffen Ludtke's avatar
Steffen Ludtke committed
						log("*** " & __SCOPE__ & ": PASS: UPDATE message received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}
			
//			f_awaitingResponse(mw_UPDATE_Request_ContactChange(
//				vc_callId, 
//				mw_contact_sourceLegAtCreation, 
//				mw_contentType_appclication_sdp, 
//				mw_sdpmessageBody));
		//	f_awaitingResponse(mw_sccas_Response_2xxmediaOnly(vc_callIdReg, p_cSeq_s, ?, ?, ?, mw_contact_g3gppDrvccAlertingFeature));
		
		} // End of f_TC_ISC_SCCAS_CPT_INV_05
Steffen Ludtke's avatar
Steffen Ludtke committed
		
		function f_TC_ISC_SCCAS_CPT_INV_06(in CSeq p_cSeq_s)
		runs on ImsComponent {
		// Local variables
		var CSeq v_cSeq_s := p_cSeq_s;
		
		// Preambule
		f_init_userprofile(c_userProfile_UE1atSUThome);
		f_initSipUrl(c_serviceProfile_EMERGENCY);
		f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				
		// initial condition: the UE entity isRegisteredTo the IMS  
		f_registrationAS(p_cSeq_s);
		
		
		// TODO: the IUT entity hasAchievedInitialINVITE // TODO: INVITE contains: g3gppDrvccAlerting
		
		// STEP: send r_180_ringing
		f_sendResponse(m_Response_Base(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
		
		// Expected Update
		tc_ack.start;
				alt {
					[] SIPP.receive(mw_UPDATE_Request_ContactChange(
							vc_callId, 
							mw_contact_sourceLegAtCreation, 
							mw_contentType_appclication_sdp, 
							mw_sdpmessageBody)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: UPDATE message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}
		
		} // End of f_TC_ISC_SCCAS_CPT_INV_06
		
		function f_TC_ISC_SCCAS_PCT_REF_02(in CSeq p_cSeq_s)
		runs on ImsComponent {
			
			// Preambule
			f_init_userprofile(c_userProfile_UE1atSUThome);
			f_initSipUrl(c_serviceProfile_EMERGENCY);
			f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
					
			// initial condition: the UE entity isRegisteredTo the IMS  
			f_registrationAS(p_cSeq_s);
			
			
			// STEP: send 488 notAcceptableHere
			f_sendResponse(m_Response_Base(c_statusLine488, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
			
			
//				template CallId p_callId := ?,
//					template(value) SipUrl p_requestUri,
//					template(value) SipUrl p_referredBy,
//					template(value) MessageBody p_messageBody	
			// Ecpecation: REFER message
			tc_ack.start;
				alt {
					[] SIPP.receive(mw_REFER_Request_stl(
							vc_callId, 
							?, 
							?, 
							mw_sdpmessageBody)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: REFER message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}
			
		} // End of f_TC_ISC_SCCAS_PCT_REF_02
Steffen Ludtke's avatar
Steffen Ludtke committed
		
		function f_TC_ISC_SCCAS_PCT_INV_05(in CSeq p_cSeq_s)
		runs on ImsComponent {
			
			// Preambule
			f_init_userprofile(c_userProfile_UE1atSUThome);
			f_initSipUrl(c_serviceProfile_EMERGENCY);
			f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
					
			// initial condition: the UE entity isRegisteredTo the IMS  
			f_registrationAS(p_cSeq_s);
			
			// TODO:
			// one dialog is early dialog 
			// and
			// a SIP 180 (Ringing) response to the SIP INVITE request has not been received yet in any of the existing dialogs
			// and
			// the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting feature-capability indicator as in a Feature-Caps header field of SIP 18x responses
			// and
			// the Contact header field in the initial SIP INVITE request sent by the SC UE towards the SCC AS included a g.3gpp.ps2cs-drvcc-orig-pre-alerting media feature tag as
			// and
			// the remote leg is not a precondition enabled dialog
			
			
			// STEp: send invite
			LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
			f_SendINVITE(m_sccas_invite(
					vc_requestUri,
					vc_callId,
					vc_cSeq,
					vc_from,
					vc_to,
					vc_via_REG,
					vc_contact,
					omit, 
					vc_route,
					m_supported_replaces, 
					m_messageBody_SDP_mediaOnly
					
				));
			
			// TDOD  PEarlyMedia indicating value "the last received P-Early-Media header field",
			
			// TODO: Contact indicating value "set to the Contact header field provided by the served UE at the creation of the dialog",
			// TDOD: SDP containing Media indicating value "the media characteristics as received in the SIP INVITE request due to PS to CS STN (including any precondition mechanism specific SDP attributes)";                       		
			f_awaitingUPDATE(mw_UPDATE_Request_ContactChange(vc_callId, vc_contact, mw_contentType_appclication_sdp, ?));
			
			
			
			
		} // End of f_TC_ISC_SCCAS_PCT_INV_05
		
		
Steffen Ludtke's avatar
Steffen Ludtke committed
    } // End of group Group_9_3
     
    group Group_10_3 {

            /**
             *  @desc    Verify that the SCC AS successfully processes an INVITE on a previously established dialog if the SIP INVITE request contains a Replaces header field.
             *  @param   p_cSeq_s Random CSeq REGISTER number
             */
            function f_TC_ISC_SCCAS_PPT_RIN_01(in CSeq p_cSeq_s)
            runs on ImsComponent {
                // Local variables
                var CSeq v_cSeq_s := p_cSeq_s;

                // Preambule
                f_init_userprofile(c_userProfile_UE1atSUThome);
                f_initSipUrl(c_serviceProfile_EMERGENCY);
                f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
                // Registration
                f_sendRegistrationAndAwait200Ok(
                                                v_cSeq_s,
                                                m_sccas_register(
                                                                vc_requestUri, 
                                                                vc_callId, 
                                                                vc_cSeq, 
                                                                vc_from, 
                                                                vc_to, 
                                                                vc_via_REG, 
                                                                vc_contact, 
                                                                m_add_Authorization_digest(
                                                                                            vc_authorization, 
                                                                                            {c_Integrity_protected_no}
                                                                                            ), 
                                                                PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
                                                                PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
                                                                "600000",
                                                                -,
                                                                m_contentType(c_sdpApplication), // TODO To be refined during validation
                                                                m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
                                                ), 
                                                mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
                                                );
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync

                // Registration
                f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
                f_SendINVITE(
Axel Rennoch's avatar
Axel Rennoch committed
							 m_sccas_invite_replaces(   // TODO request active speech media component using CS bearer
                                            vc_requestUri,
Axel Rennoch's avatar
Axel Rennoch committed
											vc_callId, 
                                            p_cSeq_s, 
                                            vc_from, vc_to, vc_via_REG, 
                                            vc_contact,
                                            -, -, -,
Axel Rennoch's avatar
Axel Rennoch committed
                                            m_MBody_SDP(vc_sdp_local),
Axel Rennoch's avatar
Axel Rennoch committed
											m_Replaces(vc_callId.callid,{quotedString:=""},{quotedString:=""}) // indicating access transfer procedure
                                            ));
                tc_ack.start;
                alt {
Axel Rennoch's avatar
Axel Rennoch committed
                    [] SIPP.receive(mw_INVITE_Request_contact(mw_sccas_contact())) {
                        tc_ack.stop;
                        log("*** " & __SCOPE__ & ": PASS: forwarded INVITE message was received ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
                    }
                    [] tc_ack.timeout {
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
                    }
                }

Axel Rennoch's avatar
Axel Rennoch committed
				f_deregistrationAS(p_cSeq_s);
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // End of function f_TC_ISC_SCCAS_PPT_RIN_01        

			/**
			 *  @desc    Verify that the SCC AS successfully processes an UPDATE on an existing early dialog if the SIP INVITE request contains a Replaces header field.
			 *  @param   p_cSeq_s Random CSeq REGISTER number
			 */
			function f_TC_ISC_SCCAS_PPT_RIN_02(in CSeq p_cSeq_s)
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;

				// Preambule
				f_init_userprofile(c_userProfile_UE1atSUThome);
				f_initSipUrl(c_serviceProfile_EMERGENCY);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				// Registration
				f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync

				// Registration
				f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
				f_SendINVITE(
							 m_sccas_invite(   // TODO request active speech media component using CS bearer
											vc_requestUri,
											vc_callId, 
											p_cSeq_s, 
											vc_from, vc_to, vc_via_REG, 
											vc_contact,
											-, -, -,
											m_MBody_SDP(vc_sdp_local)
											));
				tc_ack.start;
				alt {
					[] SIPP.receive(mw_UPDATE_Request_Base(?)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: UPDATE message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}

Axel Rennoch's avatar
Axel Rennoch committed
				f_deregistrationAS(p_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

			} // End of function f_TC_ISC_SCCAS_PPT_RIN_02    
			/**
			 *  @desc    Verify that the SCC AS processes an INVITE if it is unable to associate the SIP INVITE request with a confirmed dialog or on a previously established dialog.
			 *  @param   p_cSeq_s Random CSeq REGISTER number
			 */
			function f_TC_ISC_SCCAS_PPT_RIN_03(in CSeq p_cSeq_s)
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;

				// Preambule
				f_init_userprofile(c_userProfile_UE1atSUThome);
				f_initSipUrl(c_serviceProfile_EMERGENCY);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				// Registration
				f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync

				// Registration
				f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
				f_SendINVITE(
							 m_sccas_invite( // TODO Replaces indicating value PX_UE_A_SIP_URI; // indicating access transfer procedure
											vc_requestUri,
											vc_callId, 
											p_cSeq_s, 
											vc_from, vc_to, vc_via_REG, 
											vc_contact,
											-, -, -,
											m_MBody_SDP(vc_sdp_local)
											));
				tc_ack.start;
				alt {
					[] SIPP.receive(mw_Response_Base(c_statusLine480)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}

Axel Rennoch's avatar
Axel Rennoch committed
				f_deregistrationAS(p_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

			} // End of function f_TC_ISC_SCCAS_PPT_RIN_03

			/**
			 *  @desc    Verify that the SCC AS processes an INVITE if number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg.
			 *  @param   p_cSeq_s Random CSeq REGISTER number
			 */
			function f_TC_ISC_SCCAS_PPT_RIN_04(in CSeq p_cSeq_s)
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;

				// Preambule
				f_init_userprofile(c_userProfile_UE1atSUThome);
				f_initSipUrl(c_serviceProfile_EMERGENCY);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				// Registration
				f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync

				// Registration
				f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersINVITE(v_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome));
				f_SendINVITE(
							 m_sccas_invite( // TODO TargetDialog indicating value PX_UE_MediaLines; // indicating number of media lines in the Target Access Leg is less than the number of media lines in the Source Access Leg
											vc_requestUri,
											vc_callId, 
											p_cSeq_s, 
											vc_from, vc_to, vc_via_REG, 
											vc_contact,
											-, -, -,
											m_MBody_SDP(vc_sdp_local)
											));
				tc_ack.start;
				alt {
					[] SIPP.receive(mw_Response_Base(c_statusLine480)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: 480 OK message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}

Axel Rennoch's avatar
Axel Rennoch committed
				f_deregistrationAS(p_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

			} // End of function f_TC_ISC_SCCAS_PPT_RIN_04

			/**
			 *  @desc    Verify that the SCC AS successfully processes an BYE on a previously established dialog, if does not receive within this time interval an initial SIP INVITE request.
			 *  @param   p_cSeq_s Random CSeq REGISTER number
			 */
			function f_TC_ISC_SCCAS_PPT_BYE_01(in CSeq p_cSeq_s)
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;

				// Preambule
				f_init_userprofile(c_userProfile_UE1atSUThome);
				f_initSipUrl(c_serviceProfile_EMERGENCY);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				// Registration
				f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync

				// Registration
				f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome));
				f_SendBYE(
							 m_BYE_Request_UE(
											vc_requestUri,
											vc_callId, 
											p_cSeq_s, 
											vc_from, vc_to, vc_via_REG
											));
				tc_T1.start(8.0); tc_T1.timeout; // wait 8s
				tc_ack.start;
				alt {
					[] SIPP.receive(mw_Response_Base(c_statusLine200)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}

				tc_ack.start;
				alt {
					[] SIPP.receive(mw_BYE_Request_Base(?)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: BYE message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}
				
Axel Rennoch's avatar
Axel Rennoch committed
				f_deregistrationAS(p_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

			} // End of function f_TC_ISC_SCCAS_PPT_BYE_01

			/**
			 *  @desc    Verify that the SCC AS successfully processes an CANCEL on a early dialog.
			 *  @param   p_cSeq_s Random CSeq REGISTER number
			 */
			function f_TC_ISC_SCCAS_PPT_BYE_02(in CSeq p_cSeq_s)
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;

				// Preambule
				f_init_userprofile(c_userProfile_UE1atSUThome);
				f_initSipUrl(c_serviceProfile_EMERGENCY);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				// Registration
				f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation
																PX_IMS_SUT_SCSCF_PORT, // TODO To be refined during validation
																"600000",
																-,
																m_contentType(c_sdpApplication), // TODO To be refined during validation
																m_MBody_SDP(vc_sdp_local) // TODO To be refined during validation
												), 
												mw_sccas_Response_2xxonREGISTER(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
												);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync

				// Registration
				f_IncCSeq(v_cSeq_s); LibIms_Steps.f_setHeadersBYE(v_cSeq_s, f_initSipUrl(c_userProfile_UE1atSUThome));
				f_SendBYE(
							 m_BYE_Request_UE(
											vc_requestUri,
											vc_callId, 
											p_cSeq_s, 
											vc_from, vc_to, vc_via_REG
											));
				tc_T1.start(8.0); tc_T1.timeout; // wait 8s
				tc_ack.start;
				alt {
					[] SIPP.receive(mw_Response_Base(c_statusLine200)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}

				tc_ack.start;
				alt {
					[] SIPP.receive(mw_CANCEL_Request_Base(?)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: CANCEL message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}
				
Axel Rennoch's avatar
Axel Rennoch committed
				f_deregistrationAS(p_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

			} // End of function f_TC_ISC_SCCAS_PPT_BYE_02

			/**
			 *  @desc    Verify that the SCC AS successfully processes an CANCEL on a early dialog.
			 *  @param   p_cSeq_s Random CSeq REGISTER number
			 */
			function f_TC_ISC_SCCAS_PPT_CAN_01(in CSeq p_cSeq_s)
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;

				// Preambule
				f_init_userprofile(c_userProfile_UE1atSUThome);
				f_initSipUrl(c_serviceProfile_EMERGENCY);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				// Registration
				f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_sccas_register(
																vc_requestUri, 
																vc_callId, 
																vc_cSeq, 
																vc_from, 
																vc_to, 
																vc_via_REG, 
																vc_contact, 
																m_add_Authorization_digest(
																							vc_authorization, 
																							{c_Integrity_protected_no}
																							), 
																PX_IMS_SUT_SCSCF_IPADDR, // TODO To be refined during validation