Commit b6dd59c6 authored by rennoch's avatar rennoch
Browse files

update of session attribute test cases (5-8)

parent 38ecf303
Loading
Loading
Loading
Loading
+544 −44
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ module CH_TC_Functions {

    import from LibSip_SIPTypesAndValues language "TTCN-3:2005" all;

    function f_TC_CH_U01(
    function f_TC_CH_U01_001(
    	CSeq p_CSeq, 
    	template SDP_attribute p_direction_preamble, 
    	template SDP_attribute p_direction_in, 
@@ -62,8 +62,8 @@ module CH_TC_Functions {
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_caller_From,
            vc_caller_To
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }
@@ -83,19 +83,13 @@ module CH_TC_Functions {
        
		// tester sets communication on HOLD "sendonly"
		log("tester sets communication on HOLD (sendonly) using UPDATE method");
        log(vc_sdp_local);
        f_SIP_modMediaDirection(0,m_attribute_sendonly);
        log(vc_sdp_local);
//        LibIms_Steps.f_setHeadersUPDATE(p_CSeq,c_userProfile_PCSCFwithHomeUE);
        log(vc_sdp_local);        
//        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))));

        f_SendUPDATE(m_UPDATE_Request_Base(
            vc_requestUri, 
            vc_callId, 
            p_CSeq, 
            vc_from, 
            vc_to, 
        	vc_callee_From, //vc_from, 
        	vc_callee_To, //vc_to, 
            vc_via, 
            vc_contact, 
            m_MBody_SDP(vc_sdp_local))
@@ -131,12 +125,12 @@ module CH_TC_Functions {
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_IMS(  //f_terminateCall_UE(
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_caller_From,
            vc_caller_To
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }
@@ -189,8 +183,8 @@ module CH_TC_Functions {
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_caller_From,
            vc_caller_To
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }
@@ -210,8 +204,259 @@ module CH_TC_Functions {
        
		// tester sets communication on HOLD "sendonly"
		log("tester sets communication on HOLD (sendonly) using UPDATE method");
        log(vc_sdp_local);
        f_SIP_modMediaDirection(0,m_attribute_sendonly);
        f_SendUPDATE(m_UPDATE_Request_Base(
            vc_requestUri, 
            vc_callId, 
            p_CSeq, 
        	vc_callee_From, //vc_from, 
        	vc_callee_To, //vc_to, 
            vc_via, 
            vc_contact, 
            m_MBody_SDP(vc_sdp_local))
        );

    	f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));					
        
        f_SIP_checksetSDPreqDirection(
        	mw_attribute_recvonly, omit);
        
        action("Please set communication on HOLD using UPDATE request");
        f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId));
        
        f_SIP_checksetSDPreqDirection(
        mw_attribute_inactive, m_attribute_inactive
        ); 
        
        f_sendResponse(m_Response_2xxonUPDATE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
               
        f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
        
        // ----  test body  ----->
        action("Please resume communication using UPDATE request");
        f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId));
        
        f_SIP_checksetSDPreqDirection(
        	p_direction_in, p_direction_out
        ); 
        
        f_sendResponse(m_Response_2xxonUPDATE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }

    function f_TC_CH_U01_005(
    	CSeq p_CSeq, 
    	template SDP_attribute p_direction_preamble, 
    	template SDP_attribute p_direction_in, 
    	SDP_attribute p_direction_out
    ) runs on ImsComponent {
        f_init_gm_pcscf(p_CSeq);
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(p_direction_preamble);
        
        f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
        
        // ----  test body  ----->
        action("Please set communication on HOLD (session attribute) using UPDATE request");
        f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId));
        
        f_SIP_checksetSDPreqDirectionSession(
        	p_direction_in, p_direction_out
        ); 
        
        f_sendResponse(m_Response_2xxonUPDATE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }

    function f_TC_CH_U01_006(
    	CSeq p_CSeq, 
    	template SDP_attribute p_direction_preamble, 
    	template SDP_attribute p_direction_in, 
    	SDP_attribute p_direction_out
    ) runs on ImsComponent {
        f_init_gm_pcscf(p_CSeq);
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(p_direction_preamble);
        vc_sdp_remote := vc_sdp_local;        
        
		// tester sets communication on HOLD "sendonly"
		log("tester sets communication on HOLD (session attribute sendonly) using UPDATE method");
        f_SIP_modSessionDirection(m_attribute_sendonly);
        f_SendUPDATE(m_UPDATE_Request_Base(
            vc_requestUri, 
            vc_callId, 
            p_CSeq, 
        	vc_callee_From,
        	vc_callee_To, 
            vc_via, 
            vc_contact, 
            m_MBody_SDP(vc_sdp_local))
        );

    	f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));					
        
        f_SIP_checksetSDPreqDirectionSession(
        	mw_attribute_recvonly, omit);
        
               
        f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
        
        // ----  test body  ----->
        action("Please set communication on HOLD using UPDATE request (session attribute)");
        f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId));
        
        f_SIP_checksetSDPreqDirectionSession(
        	p_direction_in, p_direction_out
        ); 
        
        f_sendResponse(m_Response_2xxonUPDATE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }
    
    
    function f_TC_CH_U01_007(
    	CSeq p_CSeq, 
    	template SDP_attribute p_direction_preamble, 
    	template SDP_attribute p_direction_in, 
    	SDP_attribute p_direction_out
    ) runs on ImsComponent {
        f_init_gm_pcscf(p_CSeq);
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(p_direction_preamble);

        action("Please set communication on HOLD (session attribute) using UPDATE request");
        f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId));
        
        f_SIP_checksetSDPreqDirectionSession(
        	mw_attribute_sendrecv, m_attribute_sendrecv
        ); 
        
        f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
        
        // ----  test body  ----->
        action("Please resume (session) communication using UPDATE request");
        f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId));
        
        f_SIP_checksetSDPreqDirectionSession(
        	p_direction_in, p_direction_out
        ); 
        
        f_sendResponse(m_Response_2xxonUPDATE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }

    function f_TC_CH_U01_008(
    	CSeq p_CSeq, 
    	template SDP_attribute p_direction_preamble, 
    	template SDP_attribute p_direction_in, 
    	SDP_attribute p_direction_out
    ) runs on ImsComponent {
        f_init_gm_pcscf(p_CSeq);
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(p_direction_preamble);
        vc_sdp_remote := vc_sdp_local;        
        
		// tester sets communication on HOLD "sendonly"
		log("tester sets communication on HOLD (sendonly) using UPDATE method");
        log(vc_sdp_local);
        f_SIP_modSessionDirection(m_attribute_sendonly);
        log(vc_sdp_local);
//        LibIms_Steps.f_setHeadersUPDATE(p_CSeq,c_userProfile_PCSCFwithHomeUE);
        log(vc_sdp_local);        
@@ -221,8 +466,8 @@ module CH_TC_Functions {
            vc_requestUri, 
            vc_callId, 
            p_CSeq, 
            vc_from, 
            vc_to, 
        	vc_callee_From, //vc_from, 
        	vc_callee_To, //vc_to, 
            vc_via, 
            vc_contact, 
            m_MBody_SDP(vc_sdp_local))
@@ -230,13 +475,13 @@ module CH_TC_Functions {

    	f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));					
        
        f_SIP_checksetSDPreqDirection(
        f_SIP_checksetSDPreqDirectionSession(
        	mw_attribute_recvonly, omit);
        
        action("Please set communication on HOLD using UPDATE request");
        f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId));
        
        f_SIP_checksetSDPreqDirection(
        f_SIP_checksetSDPreqDirectionSession(
        mw_attribute_inactive, m_attribute_inactive
        ); 
        
@@ -257,7 +502,7 @@ module CH_TC_Functions {
        action("Please resume communication using UPDATE request");
        f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId));
        
        f_SIP_checksetSDPreqDirection(
        f_SIP_checksetSDPreqDirectionSession(
        	p_direction_in, p_direction_out
        ); 
        
@@ -275,18 +520,20 @@ module CH_TC_Functions {
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_IMS(  //f_terminateCall_UE(
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_caller_From,
            vc_caller_To
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }


    function f_TC_CH_U02(

    
    function f_TC_CH_U02_001(
        CSeq p_CSeq, 
        template SDP_attribute p_direction_preamble, 
        template SDP_attribute p_direction_in, 
@@ -325,12 +572,12 @@ module CH_TC_Functions {
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_IMS( // f_terminateCall_UE(
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_caller_From,
            vc_caller_To
        	vc_callee_From,
        	vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }
@@ -345,21 +592,18 @@ module CH_TC_Functions {
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(p_direction_preamble);
        f_acceptCall(mw_attribute_sendrecv);
        vc_sdp_remote := vc_sdp_local;
		// tester sets communication on HOLD "sendonly"
		log("tester sets communication on HOLD sendonly");
        log(vc_sdp_local);
        f_SIP_modMediaDirection(0,m_attribute_sendonly);
        log(vc_sdp_local);
        f_setHeadersReINVITE(p_CSeq,false);
        log(vc_sdp_local);        
        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))));
    	f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));					
    	f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));        		
        
        f_SIP_checksetSDPreqDirection(
        	mw_attribute_recvonly, omit
        	p_direction_preamble, omit
        ); 

        
@@ -390,12 +634,12 @@ module CH_TC_Functions {
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_IMS( //f_terminateCall_UE(
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_caller_From,
            vc_caller_To
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }
@@ -462,8 +706,8 @@ module CH_TC_Functions {
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_caller_From,
            vc_caller_To
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }
@@ -482,11 +726,8 @@ module CH_TC_Functions {
        vc_sdp_remote := vc_sdp_local;
		// tester sets communication on HOLD "sendonly"
		log("tester sets communication on HOLD sendonly");
        log(vc_sdp_local);
        f_SIP_modMediaDirection(0,m_attribute_sendonly);
        log(vc_sdp_local);
        f_setHeadersReINVITE(p_CSeq,false);      
        log(vc_sdp_local);        
        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))));
    	f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));					
    	f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));        		
@@ -544,8 +785,267 @@ module CH_TC_Functions {
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }

    function f_TC_CH_U02_005(
        CSeq p_CSeq, 
        template SDP_attribute p_direction_preamble, 
        template SDP_attribute p_direction_in, 
        SDP_attribute p_direction_out
    ) runs on ImsComponent {
        f_init_gm_pcscf(p_CSeq);
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(p_direction_preamble);
        
        f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
        
        // ----  test body  ----->
        action("Please set communication (session attribute) on HOLD");            
        f_awaitingINVITE(mw_INVITE_Request_MB(?, ?));
        
        f_SIP_checksetSDPreqDirectionSession(
            p_direction_in, p_direction_out
        ); 
        
        f_sendResponse(m_Response_2xxonINVITE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        
        // wait for ACK
        f_awaitingACK(mw_ACK_Request_Base(vc_callId));  
        
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
        	vc_callee_From,
        	vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }


    function f_TC_CH_U02_006(
        CSeq p_CSeq, 
        template SDP_attribute p_direction_preamble, 
        template SDP_attribute p_direction_in, 
        SDP_attribute p_direction_out
    ) runs on ImsComponent {
        f_init_gm_pcscf(p_CSeq);
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(mw_attribute_sendrecv);
        vc_sdp_remote := vc_sdp_local;
		// tester sets communication on HOLD "sendonly"
		log("tester sets (session) communication on HOLD sendonly");
        f_SIP_modSessionDirection(m_attribute_sendonly);
        f_setHeadersReINVITE(p_CSeq,false);     
        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))));
    	f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));					
    	f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));        		
        
        f_SIP_checksetSDPreqDirectionSession(
        	p_direction_preamble, omit
        ); 

        
        f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
        
        // ----  test body  ----->
        action("Please resume communication");            
        f_awaitingINVITE(mw_INVITE_Request_MB(?, ?));
        
        f_SIP_checksetSDPreqDirectionSession(
            p_direction_in, p_direction_out
        ); 
        
        f_sendResponse(m_Response_2xxonINVITE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));

        // wait for ACK
        f_awaitingACK(mw_ACK_Request_Base(vc_callId));      
                
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }

        function f_TC_CH_U02_007(
        CSeq p_CSeq, 
        template SDP_attribute p_direction_preamble, 
        template SDP_attribute p_direction_in, 
        SDP_attribute p_direction_out
    ) runs on ImsComponent {
        f_init_gm_pcscf(p_CSeq);
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(p_direction_preamble);

        action("Please set communication (session attribute) on HOLD");            
        f_awaitingINVITE(mw_INVITE_Request_MB(?, ?));
        f_SIP_checksetSDPreqDirectionSession(
        	mw_attribute_sendonly, m_attribute_recvonly
        );
        f_sendResponse(m_Response_2xxonINVITE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        
        // wait for ACK
        f_awaitingACK(mw_ACK_Request_Base(vc_callId));         
                
        f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
        
        // ----  test body  ----->
        action("Please resume (session) communication");            
        f_awaitingINVITE(mw_INVITE_Request_MB(?, ?));
        
        f_SIP_checksetSDPreqDirectionSession(
            p_direction_in, p_direction_out
        ); 
        
        f_sendResponse(m_Response_2xxonINVITE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        
        // wait for ACK
        f_awaitingACK(mw_ACK_Request_Base(vc_callId));
        
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }

    function f_TC_CH_U02_008(
        CSeq p_CSeq, 
        template SDP_attribute p_direction_preamble, 
        template SDP_attribute p_direction_in, 
        SDP_attribute p_direction_out
    ) runs on ImsComponent {
        f_init_gm_pcscf(p_CSeq);
        
        // ----  preamble   ----->
        f_gm_pcscf_preamble(p_CSeq);
        f_acceptCall(p_direction_preamble);
        vc_sdp_remote := vc_sdp_local;
		// tester sets communication on HOLD "sendonly"
		log("tester sets communication on HOLD sendonly");
        f_SIP_modSessionDirection(m_attribute_sendonly);
        f_setHeadersReINVITE(p_CSeq,false);     
        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))));
    	f_awaitingResponse(mw_Response_Base(c_statusLine200,vc_callId, vc_cSeq));					
    	f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));        		
        
        f_SIP_checksetSDPreqDirectionSession(
        	mw_attribute_recvonly, omit
        ); 


        action("Please set communication on HOLD");            
        f_awaitingINVITE(mw_INVITE_Request_MB(?, ?));        
        f_SIP_checksetSDPreqDirectionSession(
        	mw_attribute_inactive, m_attribute_inactive
        );        
        f_sendResponse(m_Response_2xxonINVITE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        // wait for ACK
        f_awaitingACK(mw_ACK_Request_Base(vc_callId));
        
        f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());
        
        // ----  test body  ----->
        action("Please resume (session) communication");            
        f_awaitingINVITE(mw_INVITE_Request_MB(?, ?));
        
        f_SIP_checksetSDPreqDirectionSession(
            p_direction_in, p_direction_out
        ); 
        
        f_sendResponse(m_Response_2xxonINVITE(
            c_statusLine200,
            vc_callId, vc_cSeq,
            vc_caller_From,
            vc_caller_To
            vc_caller_To, 
            vc_via,
            vc_contact,
            f_recordroute(),
            valueof(m_MBody_SDP(vc_sdp_local))
        ));
        // wait for ACK
        f_awaitingACK(mw_ACK_Request_Base(vc_callId));
        
        f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
        
        // ----  postamble   ---->      
        f_terminateCall_UE(
            vc_requestUri, 
            vc_callId,
            vc_cSeq, 
            vc_callee_From,
            vc_callee_To
        );
        f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict());
    }
+12 −12

File changed.

Preview size limit exceeded, changes collapsed.