Commit ab0a15e5 authored by Steffen Ludtke's avatar Steffen Ludtke
Browse files

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

parents 10f9bd22 4b94f54f
Loading
Loading
Loading
Loading
+126 −0
Original line number Diff line number Diff line
module AtsSccas_Steps {
    
    // LibCommon
    import from LibCommon_VerdictControl all;
    
    // LibSip
    import from LibSip_Common all;
    import from LibSip_SIPTypesAndValues all;
@@ -17,6 +20,7 @@ module AtsSccas_Steps {
    
    // AtsSccas
    import from AtsSccas_PIXITS all;
    import from AtsSccas_Templates all;

    group Constants {
    
@@ -456,4 +460,126 @@ module AtsSccas_Steps {

    } // End of group SetHeaders
    
    group CommonProcedures {
    
        function f_registrationAS(in CSeq p_cSeq_s)
            runs on ImsComponent {
                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_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER
                f_SendREGISTER(
                             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)
                              ));
                              
                tc_ack.start;
                alt {
                    [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) {
                        tc_ack.stop;

                    }
                    [] tc_ack.timeout {
                    	f_setVerdict(e_timeout);
 
                    }
                }
        } //end function f_registrationAS
        
    
        function f_deregistrationAS(in CSeq p_cSeq_s)
            runs on ImsComponent {
            // Local variables
            var CSeq v_cSeq_s := p_cSeq_s;

            // Preamble
            f_init_userprofile(c_userProfile_SCSCFwithHomeUE);
            f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); //AS as SCCAS
            f_initSipUrl(c_userProfile_SCSCFwithHomeUE);
            

            f_setHeaders_REGISTER_AS(v_cSeq_s);//AS INTERFACE REGISTER
            f_SendREGISTER(
                           m_REGISTER_Request_AS(
                                            vc_requestUri, 
                                            vc_callId, 
                                            vc_cSeq, 
                                            vc_from, 
                                            vc_to, 
                                            vc_via_REG, 
                                            vc_contact, 
                                            -,
                                            "0",
                                            - ,
                                            -)
                            );
            tc_ack.start;
            alt {
                [] SIPP.receive(mw_Response_2xxonREGISTER_AS(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) {
                    tc_ack.stop;
                }
                [] tc_ack.timeout {
                    f_setVerdict(e_timeout);
                }
            }
        } //end function f_deregistrationAS
    } //end group CommonProcedures

} // End of module AtsSccas_Steps
+179 −9
Original line number Diff line number Diff line
@@ -735,18 +735,179 @@ module AtsSccas_TCFunctions {

            } // End of function f_TC_ISC_SCCAS_GEN_INV_01

            /**
             *  @desc    Verify that the SCCAS sends 1xx and/or 2xx response to the SIP INVITE request towards the served user.
             *  @param   p_cSeq_s Random CSeq REGISTER number
             */
            function f_TC_ISC_SCCAS_GEN_INV_02(in CSeq p_cSeq_s)
            runs on ImsComponent {
                // Local variables
                var CSeq v_cSeq_s := p_cSeq_s;

                // Preamble
                f_registrationAS(v_cSeq_s);
                
                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(
                                            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_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) {
                        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 
                    }
                }

                // Postamble
                f_deregistrationAS(v_cSeq_s);
                
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync

            } // End of function f_TC_ISC_SCCAS_GEN_INV_02

        }  // End of group TP_6A_4_2_SIP_INVITE_request

    } // End of group Group_6A_4
     
    group Group_7_3 {
        group TP_Distinction_of_requests_sent_to_the_SCCAS {
        group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS {
        
	        /**
	         * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSCF
	         * @param   p_cSeq_s Random CSeq INVITE number
	         */
			function f_TC_ISC_SCCAS_ORI_INV_01(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_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_ack.start;
				alt {
					[] SIPP.receive(mw_Response_1xx_Base(vc_callId, vc_cSeq)) {
						repeat
					}
					[] SIPP.receive(mw_INVITE_Request_AS(?, ?, ?, ?, *, *)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: INVITE message was received ***");
						f_selfOrClientSyncAndVerdict(c_tbDone, e_success); // sync
					}
					[] tc_ack.timeout {
						f_selfOrClientSyncAndVerdict(c_tbDone, e_error); // sync 
					}
				}			
				
				
                //TODO Deregistration?
				f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); // sync
			
			}  //End of function f_TC_ISC_SCCAS_ORI_INV_01
			
    }	//End of group  TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS
    	
    group TP_7_3_2_Call_origination_procedures_at_the_SCCAS{
    	
			/**
	         * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSC
			 * @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 TP_ISC_SCCAS_ORI_INV_01(in CSeq p_cSeq_s)
			function f_TC_ISC_SCCAS_ORI_INV_02(in CSeq p_cSeq_s)
			runs on ImsComponent {
				// Local variables
				var CSeq v_cSeq_s := p_cSeq_s;
@@ -822,7 +983,7 @@ module AtsSccas_TCFunctions {
				f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // sync
            
				f_IncCSeq(v_cSeq_s);
				/*LibIms_Steps.*/f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE));
				f_setHeaders_INVITE_AS(v_cSeq_s, f_initSipUrl(c_userProfile_PCSCFwithHomeUE), f_initSipUrl(c_userProfile_SCSCFwithHomeUE));
				f_SendINVITE(
							 m_sccas_invite(
											vc_requestUri,
@@ -835,6 +996,11 @@ 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
					}
					[] SIPP.receive(mw_sccas_Response_2xxonINVITE(vc_callId, vc_cSeq, vc_from, vc_to, vc_via_REG, vc_contact)) {
						tc_ack.stop;
						log("*** " & __SCOPE__ & ": PASS: 200 OK message was received ***");
@@ -846,9 +1012,13 @@ module AtsSccas_TCFunctions {
				}           
                
                
			}  //End of function TP_ISC_SCCAS_ORI_INV_01
				//TODO Deregistration?
				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 TP_Distinction_of_requests_sent_to_the_SCCAS
    } // End of group Group_7_3
     
    group Group_8_3 {
+21 −1
Original line number Diff line number Diff line
@@ -649,8 +649,28 @@ module AtsSccas_Templates
                        contact         := p_contact,
                        acceptContact   := p_acceptContact
                    }}
                }
                
                
				    template (present) INVITE_Request mw_INVITE_Request_AS(
																						   template (present) SipUrl p_requestUri := ?,
																						   template (present) CallId p_callId := ?,
																						   template (present) PChargingVector p_pChargingVector := ?,
																						   template (present) PAssertedID p_pAssertedID := ?,
																						   template ContentType p_contentType := *,
																						   template MessageBody p_mb := *
																						   ) modifies mw_INVITE_Request_Base := {
								   requestLine := {
									   requestUri := p_requestUri
								   },
								   msgHeader := {
									   callId          := p_callId,
									   contentType     := p_contentType,
									   pChargingVector := p_pChargingVector,
									   pAssertedID     := p_pAssertedID                        
								   },
								   messageBody := p_mb 
				    } // End of template mw_sccas_MESSAGE_Request
                }   
                group request_receive_Yann {
                }

+65 −0
Original line number Diff line number Diff line
@@ -258,6 +258,71 @@ module AtsSccas_Testcases
    } // End of group Group_6A_4
     
    group Group_7_3 {
        group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS {

           /*
            * @desc Verify that the SCCAS first receives SIP INVITE request from UE/SCSCF
            * @param p_cSeq_s Transaction Id
            */
            testcase TP_ISC_SCCAS_ORI_INV_01(inout CSeq p_cSeq_s) 
            runs on ServerSyncComp
            system TestAdapter {
                //Variables
                var ImsComponent v_imsComponent_ueims;

                // Test control
                if (not PICS_SCCAS_GM) {
                    log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); 
                    stop;
                }

                // Test component configuration
                f_cf_1IscUp(v_imsComponent_ueims);

                //Start
                f_IncCSeq(p_cSeq_s); v_imsComponent_ueims.start(f_TC_ISC_SCCAS_ORI_INV_01(p_cSeq_s));

                // synchronize both PTCs on 3 sychronization points
                f_serverSync1Client({c_prDone, c_tbDone, c_poDone});

                f_cf_1IscDown(v_imsComponent_ueims);

            } // End of TP_ISC_SCCAS_ORI_INV_01

        } // End of group TP_7_3_1_Distinction_of_requests_sent_to_the_SCCAS
        
		group TP_7_3_2_Call_origination_procedures_at_the_SCCAS{

           /*
            * @desc Verify that the SCCAS sends 1xx/2xx response to the SIP INVITE request towards the served user
            * @param p_cSeq_s Transaction Id
            */
            testcase TP_ISC_SCCAS_ORI_INV_02(inout CSeq p_cSeq_s) 
            runs on ServerSyncComp
            system TestAdapter {
                //Variables
                var ImsComponent v_imsComponent_ueims;

                // Test control
                if (not PICS_SCCAS_GM) {
                    log("*** " & __SCOPE__ & ": ERROR: 'PICS_SCCAS_GM' shall be set to true for executing the TC. ***"); 
                    stop;
                }

                // Test component configuration
                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));

                // synchronize both PTCs on 3 sychronization points
                f_serverSync1Client({c_prDone, c_tbDone, c_poDone});

                f_cf_1IscDown(v_imsComponent_ueims);

            } // End of TP_ISC_SCCAS_ORI_INV_02
			
		} // End of group TP_7_3_2_Call_origination_procedures_at_the_SCCAS
    } // End of group Group_7_3
     
    group Group_8_3 {