Loading CH/CH_TC_Functions.ttcn +441 −3 Original line number Original line Diff line number Diff line Loading @@ -37,10 +37,136 @@ module CH_TC_Functions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- test body -----> // ---- test body -----> f_getUpdate(mw_UPDATE_Request_Base( action("Please set communication on HOLD using UPDATE request"); vc_callId 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_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U01_002( 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_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_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); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- test body -----> action("Please set communication on HOLD 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_IMS( //f_terminateCall_UE( vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U01_003( 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 using UPDATE request"); f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId)); f_SIP_checksetSDPreqDirection( mw_attribute_sendrecv, m_attribute_sendrecv ); 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( f_SIP_checksetSDPreqDirection( p_direction_in, p_direction_out p_direction_in, p_direction_out ); ); Loading Loading @@ -69,6 +195,97 @@ module CH_TC_Functions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } } function f_TC_CH_U01_004( 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_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_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_IMS( //f_terminateCall_UE( vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U02( function f_TC_CH_U02( CSeq p_CSeq, CSeq p_CSeq, template SDP_attribute p_direction_preamble, template SDP_attribute p_direction_preamble, Loading @@ -84,7 +301,8 @@ module CH_TC_Functions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- test body -----> // ---- test body -----> f_getInvite(mw_INVITE_Request_Base); action("Please set communication on HOLD"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( f_SIP_checksetSDPreqDirection( p_direction_in, p_direction_out p_direction_in, p_direction_out Loading @@ -101,6 +319,142 @@ module CH_TC_Functions { valueof(m_MBody_SDP(vc_sdp_local)) 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_IMS( // f_terminateCall_UE( vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U02_002( 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"); 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 ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- test body -----> action("Please resume communication"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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_IMS( //f_terminateCall_UE( vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U02_003( 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"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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 communication"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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()); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // ---- postamble ----> // ---- postamble ----> Loading @@ -113,4 +467,88 @@ module CH_TC_Functions { ); ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } } function f_TC_CH_U02_004( 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"); 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 ); action("Please set communication on HOLD"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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 communication"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } } } No newline at end of file CH/CH_TestCases.ttcn +16 −16 Original line number Original line Diff line number Diff line Loading @@ -46,8 +46,8 @@ module CH_TestCases { v_pcscf.start(f_TC_CH_U01( v_pcscf.start(f_TC_CH_U01( p_CSeq, p_CSeq, mw_attribute_sendrecv, mw_attribute_sendrecv, mw_attribute_recvonly, mw_attribute_sendonly, m_attribute_sendonly m_attribute_recvonly )); )); // synchronize component // synchronize component Loading Loading @@ -75,9 +75,9 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U01( v_pcscf.start(f_TC_CH_U01_002( p_CSeq, p_CSeq, mw_attribute_recvonly, mw_attribute_sendrecv, mw_attribute_inactive, mw_attribute_inactive, m_attribute_inactive m_attribute_inactive )); )); Loading Loading @@ -107,10 +107,10 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U01( v_pcscf.start(f_TC_CH_U01_003( p_CSeq, p_CSeq, mw_attribute_sendonly, mw_attribute_sendonly, mw_attribute_sendrecv, // TODO is can be also omitted mw_attribute_sendrecv, // can be also omitted m_attribute_sendrecv m_attribute_sendrecv )); )); Loading Loading @@ -139,7 +139,7 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U01( v_pcscf.start(f_TC_CH_U01_004( p_CSeq, p_CSeq, mw_attribute_inactive, mw_attribute_inactive, mw_attribute_recvonly, mw_attribute_recvonly, Loading Loading @@ -307,7 +307,7 @@ module CH_TestCases { v_pcscf.start(f_TC_CH_U02( v_pcscf.start(f_TC_CH_U02( p_CSeq, p_CSeq, mw_attribute_sendrecv, mw_attribute_sendrecv, mw_attribute_recvonly, mw_attribute_sendonly, m_attribute_sendonly m_attribute_sendonly )); )); Loading Loading @@ -336,9 +336,9 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U02( v_pcscf.start(f_TC_CH_U02_002( p_CSeq, p_CSeq, mw_attribute_recvonly, mw_attribute_sendrecv, //mw_attribute_recvonly, mw_attribute_inactive, mw_attribute_inactive, m_attribute_inactive m_attribute_inactive )); )); Loading Loading @@ -368,10 +368,10 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U02( v_pcscf.start(f_TC_CH_U02_003( p_CSeq, p_CSeq, mw_attribute_sendonly, mw_attribute_sendrecv, mw_attribute_sendrecv, // TODO is can be also omitted mw_attribute_sendrecv, // can be also omitted m_attribute_sendrecv m_attribute_sendrecv )); )); Loading Loading @@ -400,11 +400,11 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U02( v_pcscf.start(f_TC_CH_U02_004( p_CSeq, p_CSeq, mw_attribute_inactive, mw_attribute_inactive, mw_attribute_recvonly, mw_attribute_sendonly, m_attribute_sendonly m_attribute_recvonly )); )); // synchronize component // synchronize component Loading Loading
CH/CH_TC_Functions.ttcn +441 −3 Original line number Original line Diff line number Diff line Loading @@ -37,10 +37,136 @@ module CH_TC_Functions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- test body -----> // ---- test body -----> f_getUpdate(mw_UPDATE_Request_Base( action("Please set communication on HOLD using UPDATE request"); vc_callId 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_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U01_002( 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_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_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); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- test body -----> action("Please set communication on HOLD 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_IMS( //f_terminateCall_UE( vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U01_003( 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 using UPDATE request"); f_awaitingUPDATE(mw_UPDATE_Request_Base(vc_callId)); f_SIP_checksetSDPreqDirection( mw_attribute_sendrecv, m_attribute_sendrecv ); 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( f_SIP_checksetSDPreqDirection( p_direction_in, p_direction_out p_direction_in, p_direction_out ); ); Loading Loading @@ -69,6 +195,97 @@ module CH_TC_Functions { f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } } function f_TC_CH_U01_004( 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_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_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_IMS( //f_terminateCall_UE( vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U02( function f_TC_CH_U02( CSeq p_CSeq, CSeq p_CSeq, template SDP_attribute p_direction_preamble, template SDP_attribute p_direction_preamble, Loading @@ -84,7 +301,8 @@ module CH_TC_Functions { f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- test body -----> // ---- test body -----> f_getInvite(mw_INVITE_Request_Base); action("Please set communication on HOLD"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( f_SIP_checksetSDPreqDirection( p_direction_in, p_direction_out p_direction_in, p_direction_out Loading @@ -101,6 +319,142 @@ module CH_TC_Functions { valueof(m_MBody_SDP(vc_sdp_local)) 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_IMS( // f_terminateCall_UE( vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U02_002( 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"); 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 ); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- test body -----> action("Please resume communication"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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_IMS( //f_terminateCall_UE( vc_requestUri, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CH_U02_003( 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"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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 communication"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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()); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // ---- postamble ----> // ---- postamble ----> Loading @@ -113,4 +467,88 @@ module CH_TC_Functions { ); ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } } function f_TC_CH_U02_004( 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"); 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 ); action("Please set communication on HOLD"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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 communication"); f_awaitingINVITE(mw_INVITE_Request_MB(?, ?)); f_SIP_checksetSDPreqDirection( 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_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } } } No newline at end of file
CH/CH_TestCases.ttcn +16 −16 Original line number Original line Diff line number Diff line Loading @@ -46,8 +46,8 @@ module CH_TestCases { v_pcscf.start(f_TC_CH_U01( v_pcscf.start(f_TC_CH_U01( p_CSeq, p_CSeq, mw_attribute_sendrecv, mw_attribute_sendrecv, mw_attribute_recvonly, mw_attribute_sendonly, m_attribute_sendonly m_attribute_recvonly )); )); // synchronize component // synchronize component Loading Loading @@ -75,9 +75,9 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U01( v_pcscf.start(f_TC_CH_U01_002( p_CSeq, p_CSeq, mw_attribute_recvonly, mw_attribute_sendrecv, mw_attribute_inactive, mw_attribute_inactive, m_attribute_inactive m_attribute_inactive )); )); Loading Loading @@ -107,10 +107,10 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U01( v_pcscf.start(f_TC_CH_U01_003( p_CSeq, p_CSeq, mw_attribute_sendonly, mw_attribute_sendonly, mw_attribute_sendrecv, // TODO is can be also omitted mw_attribute_sendrecv, // can be also omitted m_attribute_sendrecv m_attribute_sendrecv )); )); Loading Loading @@ -139,7 +139,7 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U01( v_pcscf.start(f_TC_CH_U01_004( p_CSeq, p_CSeq, mw_attribute_inactive, mw_attribute_inactive, mw_attribute_recvonly, mw_attribute_recvonly, Loading Loading @@ -307,7 +307,7 @@ module CH_TestCases { v_pcscf.start(f_TC_CH_U02( v_pcscf.start(f_TC_CH_U02( p_CSeq, p_CSeq, mw_attribute_sendrecv, mw_attribute_sendrecv, mw_attribute_recvonly, mw_attribute_sendonly, m_attribute_sendonly m_attribute_sendonly )); )); Loading Loading @@ -336,9 +336,9 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U02( v_pcscf.start(f_TC_CH_U02_002( p_CSeq, p_CSeq, mw_attribute_recvonly, mw_attribute_sendrecv, //mw_attribute_recvonly, mw_attribute_inactive, mw_attribute_inactive, m_attribute_inactive m_attribute_inactive )); )); Loading Loading @@ -368,10 +368,10 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U02( v_pcscf.start(f_TC_CH_U02_003( p_CSeq, p_CSeq, mw_attribute_sendonly, mw_attribute_sendrecv, mw_attribute_sendrecv, // TODO is can be also omitted mw_attribute_sendrecv, // can be also omitted m_attribute_sendrecv m_attribute_sendrecv )); )); Loading Loading @@ -400,11 +400,11 @@ module CH_TestCases { f_cf_ue_up(v_pcscf); f_cf_ue_up(v_pcscf); // start component // start component v_pcscf.start(f_TC_CH_U02( v_pcscf.start(f_TC_CH_U02_004( p_CSeq, p_CSeq, mw_attribute_inactive, mw_attribute_inactive, mw_attribute_recvonly, mw_attribute_sendonly, m_attribute_sendonly m_attribute_recvonly )); )); // synchronize component // synchronize component Loading