Commit 27a749e6 authored by Axel Rennoch's avatar Axel Rennoch
Browse files

Merge branch 'TTF016' of https://forge.etsi.org/rep/int/vxlte/sccas-con into TTF016

parents d8068215 1588c9f0
Loading
Loading
Loading
Loading
+75 −150
Original line number Diff line number Diff line
@@ -795,75 +795,8 @@ module AtsSccas_TCFunctions {
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;
				var template(value) REGISTER_Request m_register3ptyUe;
				var template(value) RequestUnion m_req;
				var template(value) Response m_ResponseReg_3ptyUe;

				// Preamble
				f_init_userprofile(c_userProfile_PCSCFwithHomeUE);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				f_initSipUrl(c_userProfile_PCSCFwithHomeUE);

				//Registration
				f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER
				m_register3ptyUe :=  m_register_ue_srvcc(
													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",
													omit,
													omit,
													omit
													);
				m_req:= {Register:=valueof(m_register3ptyUe)};

				m_ResponseReg_3ptyUe :=  m_Response_2xxonREGISTER_IMS(
																c_statusLine200,
																vc_callId,
																p_cSeq_s,
																vc_from,
																vc_to,
																vc_via_REG,
																vc_contact,
																m_SipUrl_currDomain(vc_userprofile),
																vc_from.addressField.nameAddr.addrSpec
																);
				
				f_init_userprofile(c_userProfile_SCSCFwithHomeUE);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS
				f_initSipUrl(c_userProfile_SCSCFwithHomeUE);

				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone

				f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER				
			    f_sendRegistrationAndAwait200Ok(
										        v_cSeq_s,
											    m_REGISTER_Request_AS(
												    vc_requestUri, 
												    vc_callId, 
												    vc_cSeq, 
												        vc_from, 
												    vc_to, 
												    vc_via_REG, 
												    vc_contact, 
												    -,
												    "600000",
												    m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) ,
												    m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe)
							                     ),
				                                 mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
											 );
				
				f_registrationAS(v_cSeq_s);
			    f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
			
				f_IncCSeq(v_cSeq_s);
@@ -878,23 +811,23 @@ module AtsSccas_TCFunctions {
											-, -, -,
											m_MBody_SDP(vc_sdp_local)
											));
				tc_ack.start;
				tc_wait.start;
				alt {
					[] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) {
						repeat
					}
					[] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) {
						tc_ack.stop;
						tc_wait.stop;
						log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
					[] tc_wait.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}			
				
				
                //TODO Deregistration?
				f_deregistrationAS(v_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
			
			}  //End of function f_TC_ISC_SCCAS_ORI_INV_01
@@ -907,79 +840,12 @@ module AtsSccas_TCFunctions {
			 * @desc Verify that the SCCAS sends 1xx/2xx response to the SIP INVITE request towards the served user
			 * @param   p_cSeq_s Random CSeq INVITE number
			 */
			function f_TC_ISC_SCCAS_ORI_INV_02(in CSeq p_cSeq_s)
			function f_TC_ISC_SCCAS_ORI_INV_02_UE(in CSeq p_cSeq_s)
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;
				var template(value) REGISTER_Request m_register3ptyUe;
				var template(value) RequestUnion m_req;
				var template(value) Response m_ResponseReg_3ptyUe;

				// Preamble
				f_init_userprofile(c_userProfile_PCSCFwithHomeUE);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1);
				f_initSipUrl(c_userProfile_PCSCFwithHomeUE);

				//Registration
				f_setHeaders_REGISTER(v_cSeq_s);//UE REGISTER
				m_register3ptyUe :=  m_register_ue_srvcc(
													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",
													omit,
													omit,
													omit
													);
				m_req:= {Register:=valueof(m_register3ptyUe)};

				m_ResponseReg_3ptyUe :=  m_Response_2xxonREGISTER_IMS(
																c_statusLine200,
																vc_callId,
																p_cSeq_s,
																vc_from,
																vc_to,
																vc_via_REG,
																vc_contact,
																m_SipUrl_currDomain(vc_userprofile),
																vc_from.addressField.nameAddr.addrSpec
																);
                
				f_init_userprofile(c_userProfile_SCSCFwithHomeUE);
				f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS
				f_initSipUrl(c_userProfile_SCSCFwithHomeUE);

				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync preambleDone

				f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER              
				f_sendRegistrationAndAwait200Ok(
												v_cSeq_s,
												m_REGISTER_Request_AS(
													vc_requestUri, 
													vc_callId, 
													vc_cSeq, 
														vc_from, 
													vc_to, 
													vc_via_REG, 
													vc_contact, 
													-,
													"600000",
													m_contentType("multipart/mixed",{m_contentTypeBoundary(c_boundary)}) ,
													m_MBody_MIME_SipReqResp(c_boundary,m_req,m_ResponseReg_3ptyUe)
												 ),
												 mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)
											 );

				f_registrationAS(v_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
            
				f_IncCSeq(v_cSeq_s);
@@ -997,26 +863,85 @@ module AtsSccas_TCFunctions {
				tc_ack.start;
				alt {
					[] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: 1xx message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
						repeat
					}
					[] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) {
					[] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
						log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***");
						//f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
						f_sendResponse(
						m_Response_18XonINVITE_AS_Featurecaps(
											c_statusLine183,
											vc_callId, 
											p_cSeq_s, 
											vc_from, 
											vc_to, 
											vc_via_REG,
											-,
						                    -
						                    ));
						f_sendResponse(
							 m_Response_2xx_Base(
											c_statusLine200,
											vc_callId, 
											p_cSeq_s, 
											vc_from, 
											vc_to, 
											vc_via_REG
											));
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}
				//var template FcValue fc:= mw_fcValue("g3gppFeatureCapabilityIndicator",-);
				tc_wait.start;
				alt {
					[] SIPP.receive(mw_Response_PCV_FeatureCaps(
					                   183,
					                   ?,
					                   ?,
					                   ?,
					//mw_sccas_featureCaps({})
					                   mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator",{-})),
										                     (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator",{-})),
										                     (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator",{-})),
										                     (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator",{-}))
					                                       })
                                       )) {
						log("*** " & __SCOPE__ & ": PASS: 183 message was received ***");
						//f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
						repeat
					}
					[] SIPP.receive(mw_Response_PCV_FeatureCaps(
										200,
										?,
										?,
										?,
										mw_sccas_featureCaps({(mw_fcValue("g3gppFeatureCapabilityIndicator",{-})),
															 (mw_fcValue("g3gppMidcallFeatureCapabilityIndicator",{-})),
															 (mw_fcValue("g3gppSrvccAlertingFeatureCapabilityIndicator",{-})),
															 (mw_fcValue("g3gppPs2csSrvccOrigPreAlertingMediaIndicator",{-})),
											                 (mw_fcValue("g3gppRemoteLegInfoFeatureCapabilityIndicator",{-}))
															})
					)) {
						tc_wait.stop;
						log("*** " & __SCOPE__ & ": PASS: response 200 OK was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_wait.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}
				           
                
				//TODO Deregistration?
                
				f_deregistrationAS(v_cSeq_s);
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
            
			}  //End of function f_TC_ISC_SCCAS_ORI_INV_02
			
			
        }  //End of group TP_7_3_2_Call_origination_procedures_at_the_SCCAS
        
    } // End of group Group_7_3
+35 −1
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ module AtsSccas_Templates
            fcParams := p_fcParams
        } // End of template m_fcValue

        template FcValue mw_fcValue(
        template (present) FcValue mw_fcValue(
                                    template (present) charstring p_wildcard := ?,
                                    template SemicolonParam_List p_fcParams := *
                                    ) := {
@@ -415,6 +415,25 @@ module AtsSccas_Templates
                            },
                            messageBody := p_mb
                        }
                        group response_sent{
							template(value) Response m_Response_18XonINVITE_AS_Featurecaps(
								template(value) StatusLine_18x p_statusLine,
								template(value) CallId p_callId,
								template(value) CSeq p_cSeq,
								template(value) From p_from,
								template(value) To p_to,
								template(value) Via p_via,
								template(omit) Contact p_contact := omit,
								template(omit) FeatureCaps p_featureCaps := omit
                                                                          
							) modifies m_Response_18x_Base := {
								msgHeader := {
									contact := p_contact, // mandatory field due to 24 229 rel 7.9
									featureCaps   := p_featureCaps
								}
							}
                        
                        } //End of group response
                }
                
                group request_sent_Yann {
@@ -699,6 +718,21 @@ module AtsSccas_Templates
								   },
								   messageBody := p_mb 
				    } // End of template mw_sccas_MESSAGE_Request
				    
				    group response{
						template(present) Response mw_Response_PCV_FeatureCaps(
											template(present) StatusLine.statusCode p_statusCode := ?,
											template CallId p_callId,
											template CSeq p_cSeq,
											template(present) PChargingVector p_chargingVector := ?,
						                    template(omit) FeatureCaps p_featureCaps := omit
										) modifies mw_Response_StatusCode_Base := {
											msgHeader := {
												pChargingVector := p_chargingVector,
												featureCaps   := p_featureCaps
											}
										}
				    }
                }   
                group request_receive_Yann {
                }
+4 −4
Original line number Diff line number Diff line
@@ -313,7 +313,7 @@ module AtsSccas_Testcases
                f_cf_1IscUp(v_imsComponent_ueims);
				
                //Start
                f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_ORI_INV_02(p_cSeq_s));
                f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_ORI_INV_02_UE(p_cSeq_s));
				
                // synchronize both PTCs on 3 sychronization points
                f_serverSync1Client({c_prDone, c_tbDone, c_poDone});