Commit 3daa14cf authored by poglitsch's avatar poglitsch
Browse files

merged to SVN

parent 1754f30d
Loading
Loading
Loading
Loading
+131 −4
Original line number Diff line number Diff line
@@ -38,7 +38,8 @@ module IMS_SS_Functions {
        }
     	
     	function f_init_ics_scscf(CSeq p_CSeq) runs on ImsComponent {
            f_IMS_preamble_woRegistration(c_userProfile_SCSCFwithHomeUE, p_CSeq);
            vc_interface_isc := true; //isc interface is used - used to handle procedure for wrong invite,...
            f_IMS_preamble_woRegistration(c_userProfile_SCSCFwithHomeUE_domain, p_CSeq);
     	}
     	
        function f_init_ics_as(CSeq p_CSeq) runs on ImsComponent {
@@ -57,8 +58,29 @@ module IMS_SS_Functions {
    			}
            }
    	}   
    }//end group preabmels
        
    group postambles{
    
            function f_isc_postamble_after_INVITE() runs on ImsComponent {
                //      clear session to send 486 and await ACK
                f_sendResponse(m_Response_Base(
                    c_statusLine486, 
                    vc_callId,
                    vc_cSeq, 
                    vc_caller_From,
                    vc_caller_To, 
                    vc_via
                ));
                f_awaitingACK(mw_ACK_Request_Base(?));
        
                //await 486 which go towards and send ACK        
                f_awaitingResponse(mw_Response_Base(c_statusLine486,?,?));
                f_SendACK(m_ACK_Request_Base(vc_requestUri,vc_callId,vc_cSeq,vc_from,vc_to,vc_via));
            }
    
    }//end group postambles
    
    group messageFunctions {
        
        function f_getInvite(template INVITE_Request p_request) runs on ImsComponent {
@@ -78,7 +100,7 @@ module IMS_SS_Functions {
            
            f_awaitingUPDATE(p_request);
        }
    }
    }//end group messageFunctions
    
    group imsSteps {
    
@@ -197,12 +219,117 @@ module IMS_SS_Functions {
           // wait for ACK
           f_awaitingACK(mw_ACK_Request_Base(vc_callId));
        }
    }
    }//end group imsSteps
    
    group helperFunctions {
        function f_getReqContactURI(Request p_request) return SipUrl {
            return p_request.msgHeader.contact.contactBody.contactAddresses[0].
                addressField.nameAddr.addrSpec;
        }
    }//end group helperFunctions
    
	
	
    group sessionFunctions {
	
        group sessionTypes {
            
            type record DialogRecords {
                SessionDialog session1 optional,
                SessionDialog session2 optional
            }
            
            type record SessionDialog {
                CallId callId optional,
                From calleeFrom optional,
                To calleeTo optional,
                From callerFrom optional, 
                To callerTo optional,
                CSeq cSeq optional, 
                SipUrl remoteURI optional,
                HostPort remoteTarget optional,
                Route route optional,
                RecordRoute recordRoute optional,
                Via	via optional,
                Contact contact optional
            }
        }
        
        template SessionDialog m_sessionEmpty :={
                callId := omit,
                calleeFrom := omit,
                calleeTo := omit,
                callerFrom := omit, 
                callerTo := omit,
                cSeq := omit, 
                remoteURI := omit,
                remoteTarget := omit,
                route := omit,
                recordRoute := omit,
                via := omit,
                contact := omit
            }
    	
        group sessionModification {
    		
            /**
             * @desc This function saves the current dialog infomation
             * @return Dialog infomation
             */
            function f_saveSession() runs on ImsComponent return SessionDialog {
                var SessionDialog v_dialog := {
                    callId := vc_callId,
                    calleeFrom := vc_from,
                    calleeTo := vc_to,
                    callerFrom := vc_caller_From, 
                    callerTo := vc_caller_To, 
                    cSeq := vc_cSeq,
                    remoteURI := vc_requestUri,
                    remoteTarget := vc_reqHostPort,
                    route := vc_route,
                    recordRoute := vc_recordRoute,
                    via := vc_via,
                    contact := vc_contact
                }
    			
                return v_dialog;
            }
            
            /**
             * @desc This function saves two dialog sessions infomation
             * @return Dialog infomation
             */
            function f_saveDialogRecords(in SessionDialog p_dialog1,in SessionDialog p_dialog2) runs on ImsComponent return DialogRecords {
                var DialogRecords v_dialogRecords :={
                    session1 := p_dialog1,
                    session2 := p_dialog2
                }
                return v_dialogRecords;
            }           
            
            
            /**
             * @desc This function loads a given dialog parameters (previously stored)
             * @param p_dialog dialog parameters
             */
            function f_loadSession(in SessionDialog p_dialog) runs on ImsComponent {
                vc_callId := p_dialog.callId;
                vc_from := p_dialog.calleeFrom;
                vc_to := p_dialog.calleeTo;
                vc_caller_From:= p_dialog.callerFrom;
                vc_caller_To:= p_dialog.callerTo; 
                vc_cSeq := p_dialog.cSeq;
                vc_requestUri := p_dialog.remoteURI;
                vc_reqHostPort := p_dialog.remoteTarget;
                vc_route := p_dialog.route;
                vc_recordRoute := p_dialog.recordRoute;
                vc_via := p_dialog.via;
                vc_contact := p_dialog.contact;
            }
            
            
        }
    }
    
    
}
 No newline at end of file
+1 −1
Original line number Diff line number Diff line
@@ -586,7 +586,7 @@
     * @desc Setup the test configureation for AS testing at ICS interface.
     * @param p_comp S-CSCF Test Component
     */
    function f_cf_as_up(ImsComponent p_comp) runs on ServerSyncComp {
    function f_cf_as_up(inout ImsComponent p_comp) runs on ServerSyncComp {
        //Create 
        p_comp := ImsComponent.create("S-CSCF");
						
+3 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ module CDIV_TC_Functions {
    
    import from http_uri_etsi_org_ngn_params_xml_comm_div_info language "XSD" all;


    group SuplementaryService_CDIV {
    
    group Common_CDIV{
+0 −63
Original line number Diff line number Diff line
@@ -155,69 +155,6 @@ module CONF_Steps {
        }
    }
    
    
    group sessionFunctions {
    
        group sessionTypes {
            type record SessionDialog {
                CallId callId,
                From calleeFrom,
                To calleeTo,
                From callerFrom, 
                To callerTo,
                CSeq cSeq optional, 
                SipUrl remoteURI,
                HostPort remoteTarget,
                Route route optional,
                RecordRoute recordRoute optional,
                Via via
            }
        }
        
        group sessionModification {
            
            /**
             * @desc This function saves the current dialog infomation
             * @return Dialog infomation
             */
            function f_saveSession() runs on ImsComponent return SessionDialog {
                var SessionDialog v_dialog := {
                    callId := vc_callId,
                    calleeFrom := vc_from,
                    calleeTo := vc_to,
                    callerFrom := vc_caller_From, 
                    callerTo := vc_caller_To, 
                    cSeq := vc_cSeq,
                    remoteURI := vc_requestUri,
                    remoteTarget := vc_reqHostPort,
                    route := vc_route,
                    recordRoute := vc_recordRoute,
                    via := vc_via
                }
                
                return v_dialog;
            }
            
            /**
             * @desc This function loads a given dialog parameters (previously stored)
             * @param p_dialog dialog parameters
             */
            function f_loadSession(in SessionDialog p_dialog) runs on ImsComponent {
                vc_callId := p_dialog.callId;
                vc_from := p_dialog.calleeFrom;
                vc_to := p_dialog.calleeTo;
                vc_caller_From:= p_dialog.callerFrom;
                vc_caller_To:= p_dialog.callerTo; 
                vc_cSeq := p_dialog.cSeq;
                vc_requestUri := p_dialog.remoteURI;
                vc_reqHostPort := p_dialog.remoteTarget;
                vc_route := p_dialog.route;
                vc_recordRoute := p_dialog.recordRoute;
                vc_via := p_dialog.via;
            }
        }
    }
    
    function f_clearSDPprecondition(inout SDP_Message p_sdp) {
        if(ispresent(p_sdp.media_list)) {
            var SDP_attribute_list v_attList;
+132 −46
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ module CW_TC_Functions {

    import from SS_Ims_PIXITS all;
    
    import from LibIms_PIXITS all;	

    import from LibIms_Steps all;

    import from LibIms_Interface all;
@@ -19,6 +21,8 @@ module CW_TC_Functions {
    
    import from IMS_SS_Functions all;
    
    import from OIP_OIR_Templates all;

    group SuplementaryService_CW{
    	group SS_CW_SIPSIP{
    		group destination_UE{
@@ -752,6 +756,73 @@ module CW_TC_Functions {
        }// end group originating_UE

        group AS {
         	group ASgeneralFunctions{   
            /**
            * 
            * @desc function establish originating2AS call session and AS2terminating session
            * @param p_dialog_orig parameters for originating session
            * @param p_dialog_term parameters for terminating session
            * @param v_dialogRecords return parameters from both sessions to use them later for releasing the call
            * @verdict 
            */
            
            function f_establishCall_2sessionsAS(in SessionDialog p_dialog_orig, in SessionDialog p_dialog_term) runs on ImsComponent return DialogRecords{
    			 var DialogRecords v_dialogRecords;
    			 // INVITE from SCSCF(origUser)toAS
                 LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome);
                 vc_route := valueof(m_route_interface_OIP_OIR(vc_interfaceprofile,vc_userprofile,"term"));
        
                 p_dialog_orig := f_saveSession();
                 f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, omit, omit, omit, valueof(m_MBody_SDP(vc_sdp_local))));
                     //await INVITE from AStoSCSCF(termUser)
                     f_awaitingINVITE(mw_INVITE_Request_Base);
            
                     vc_contact := valueof(m_Contact(m_SipUrl_NumberHostParam(PX_IMS_SUT_UE1_PUBLIC_USER,PX_IMS_TS_SCSCF_IPADDR,omit)));//f_initSipUrl(c_userProfile_UE1atSUThome)));
                     f_sendResponse(m_Response_18XonINVITE(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact));
                     p_dialog_term := f_saveSession();
            
                 f_loadSession(p_dialog_orig);
                 f_awaitingResponse(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq));
                 p_dialog_orig := f_saveSession();
            
                     f_loadSession(p_dialog_term);
                     f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, omit, valueof(m_MBody_SDP(vc_sdp_local))));
        
                 f_loadSession(p_dialog_orig);
                 f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
                 f_loadSession(p_dialog_orig);
                 f_setHeadersACK();
                 f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
                     	
                     f_loadSession(p_dialog_term);
                     f_awaitingACK(mw_ACK_Request_Base(vc_callId));
                 
                 v_dialogRecords := f_saveDialogRecords(p_dialog_orig, p_dialog_term);
                 return v_dialogRecords;
            }
            
            /**
            * 
            * @desc function release call sessions originating2AS call session and AS2terminating session
            * @param p_dialog_orig parameters for originating session
            * @param p_dialog_term parameters for terminating session
            * @verdict 
            */
            function f_releaseCall_2sessions(in SessionDialog p_dialog_orig, in SessionDialog p_dialog_term) runs on ImsComponent{
                //Send BYE from SCSCF(origUser)toAS
                f_loadSession(p_dialog_orig);
                f_setHeadersGeneral(vc_cSeq, "BYE");//LibIms_Steps.f_setHeadersBYE(vc_cSeq, c_userProfile_UE1atSUThome);
                f_SendBYE(m_BYE_Request_Base( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
                p_dialog_orig := f_saveSession();
    				// await BYE from AStoSCSCF(termUser)
                    f_loadSession(p_dialog_term);
                    f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
                    
                f_loadSession(p_dialog_orig);
                f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
                 
            }
        }//end group ASgeneralFunctions
        
            /**
            * 
@@ -760,41 +831,56 @@ module CW_TC_Functions {
            * @verdict 
            */
        function f_Sip_CW_N01_001_SCSCF(in CSeq p_cSeq) runs on ImsComponent {
            var DialogRecords v_dialogRecords;
            var SessionDialog v_UE1toAS_Session, v_UE2toAS_Session, v_AStoUECW_Session,v_AStoUECW_Session2;
            //var SipUserProfile v_userprofile2;
            v_UE1toAS_Session := m_sessionEmpty;
            v_AStoUECW_Session := m_sessionEmpty;
           
            f_init_ics_scscf(p_cSeq);
            f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS);
            //Establish first call from UE1 to AS and from AS
            v_dialogRecords := f_establishCall_2sessionsAS(v_UE1toAS_Session, v_AStoUECW_Session);
            v_UE1toAS_Session := v_dialogRecords.session1;
            v_AStoUECW_Session := v_dialogRecords.session2;
            
            f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            
            // ----  test body  ----->
    
            // INVITE to UE2@SUThome
              vc_xml_local := valueof(m_XmlBody_CW(m_CW({}))); // communication_waiting_indication
            LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);

            f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, vc_recordRoute, omit, omit, valueof(m_MBody_SDP(vc_sdp_local))));

                f_awaitingINVITE(mw_INVITE_Request_MB(?, mw_MBody_XML(m_XmlBody_CW(m_CW({})))));
			  // INVITE from SCSCF(origUser2)toAS
              LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome);
              vc_route := valueof(m_route_interface_OIP_OIR(vc_interfaceprofile,vc_userprofile,"term"));

                f_sendResponse(m_Response_ext(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute()));
              v_UE2toAS_Session := f_saveSession();
              f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, omit, omit, omit, valueof(m_MBody_SDP(vc_sdp_local))));
                  //await INVITE from AStoSCSCF(termUser-2session)
            	  f_awaitingINVITE(mw_INVITE_Request_MB(?, mw_MBody_MIMESdpXml(?,vc_xml_local)));

                  vc_contact := valueof(m_Contact(m_SipUrl_NumberHostParam(PX_IMS_SUT_UE1_PUBLIC_USER,PX_IMS_TS_SCSCF_IPADDR,omit)));//f_initSipUrl(c_userProfile_UE1atSUThome)));
            	  f_awaitingResponse(mw_Response_AlertInfo(c_statusLine180, vc_callId, vc_cSeq, mw_AlertInfo("<urn:alert:service:call-waiting>")));
            	  v_AStoUECW_Session2 := f_saveSession();

            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
              f_loadSession(v_UE2toAS_Session);
              f_awaitingResponse(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq));
              v_UE2toAS_Session := f_saveSession();

                f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local))));
                  f_loadSession(v_AStoUECW_Session2);
                  f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, omit, valueof(m_MBody_SDP(vc_sdp_local))));

              f_loadSession(v_UE2toAS_Session);
              f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));

              f_loadSession(v_UE2toAS_Session);
              f_setHeadersACK();
              f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
         	
                  f_loadSession(v_AStoUECW_Session2);
                  f_awaitingACK(mw_ACK_Request_Base(vc_callId));
    			
            f_SendBYE(m_BYE_Request_Base( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));

            	f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
            f_releaseCall_2sessions(v_UE2toAS_Session, v_AStoUECW_Session2);
            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());

            f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));
			f_releaseCall_2sessions(v_UE1toAS_Session, v_AStoUECW_Session);
            
        }// end f_Sip_CW_N01_001_SCSCF
        
@@ -813,10 +899,10 @@ module CW_TC_Functions {
            
            // ----  test body  ----->
    
            // INVITE to UE2@SUThome
            // INVITE to UE1@SUThome
            vc_xml_local := valueof(m_XmlBody_CW(m_CW({}))); // communication_waiting_indication
            LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);

            LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome);
            vc_route := valueof(m_route_interface_OIP_OIR(vc_interfaceprofile,vc_userprofile,"term"));
            f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, vc_recordRoute, omit, omit, valueof(m_MBody_SDP(vc_sdp_local))));

                f_awaitingINVITE(mw_INVITE_Request_MB(?, mw_MBody_XML(m_XmlBody_CW(m_CW({})))));
@@ -866,10 +952,10 @@ module CW_TC_Functions {
                
                // ----  test body  ----->
        
                // INVITE to UE2@SUThome
                // INVITE to UE1@SUThome
                vc_xml_local := valueof(m_XmlBody_CW(m_CW({}))); // communication_waiting_indication
                LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);
    
                LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome);
                vc_route := valueof(m_route_interface_OIP_OIR(vc_interfaceprofile,vc_userprofile,"term"));
                f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, vc_recordRoute, omit, omit, valueof(m_MBody_SDP(vc_sdp_local))));
           		
                    f_awaitingINVITE(mw_INVITE_Request_MB(?, mw_MBody_XML(m_XmlBody_CW(m_CW({})))));
@@ -902,10 +988,10 @@ module CW_TC_Functions {
            
            // ----  test body  ----->
    
            // INVITE to UE2@SUThome
            // INVITE to UE1@SUThome
            vc_xml_local := valueof(m_XmlBody_CW(m_CW({}))); // communication_waiting_indication
            LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);

            LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome);
            vc_route := valueof(m_route_interface_OIP_OIR(vc_interfaceprofile,vc_userprofile,"term"));
            f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, vc_recordRoute, omit, omit, valueof(m_MBody_SDP(vc_sdp_local))));

                f_awaitingINVITE(mw_INVITE_Request_MB(?, mw_MBody_XML(m_XmlBody_CW(m_CW({})))));
@@ -949,10 +1035,10 @@ module CW_TC_Functions {
            
        // ----  test body  ----->
    
        // INVITE to UE2@SUThome
        // INVITE to UE1@SUThome
        vc_xml_local := valueof(m_XmlBody_CW(m_CW({}))); // communication_waiting_indication
        LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);

        LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome);
        vc_route := valueof(m_route_interface_OIP_OIR(vc_interfaceprofile,vc_userprofile,"term"));
        f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, vc_recordRoute, omit, omit, valueof(m_MBody_SDP(vc_sdp_local))));

            f_awaitingINVITE(mw_INVITE_Request_MB(?, mw_MBody_XML(m_XmlBody_CW(m_CW({})))));
@@ -997,16 +1083,16 @@ module CW_TC_Functions {
            function f_Sip_CW_N01_006_SCSCF(in CSeq p_cSeq) runs on ImsComponent {

                f_init_ics_scscf(p_cSeq);
                //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS);
                f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS);
            
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
            
                // ----  test body  ----->
    
                // INVITE to UE2@SUThome
                // INVITE to UE1@SUThome
                vc_xml_local := valueof(m_XmlBody_CW(m_CW({}))); // communication_waiting_indication
                LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);

                LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome);
                vc_route := valueof(m_route_interface_OIP_OIR(vc_interfaceprofile,vc_userprofile,"term"));
                f_SendINVITE(m_INVITE_Request_IMS(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, vc_route, vc_recordRoute, omit, omit, valueof(m_MBody_SDP(vc_sdp_local))));

                    f_awaitingINVITE(mw_INVITE_Request_MB(?, ?));
Loading