Loading CONF/CONF_TC_Functions.ttcn3 +125 −91 Original line number Diff line number Diff line Loading @@ -2810,20 +2810,33 @@ module CONF_TC_Functions { } function f_TC_CONF_N09_002(CSeq p_CSeq) runs on ImsComponent { var SessionDialog v_UE1_Session, v_UE2_Session; var SipUrl v_conf; f_init_ics_scscf(p_CSeq); LibIms_Steps.f_init_userprofile(c_userProfile_UE1atSUThome); // ---- test body -----> // ---- create conference -----> // send INVITE including conf-factory-uri LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_conferenceProfile_factoryURI); f_SendINVITE(m_INVITE_Request_Base( vc_route := valueof(m_route_interface_CONF(vc_interfaceprofile,vc_userprofile,"orig")); f_SendINVITE(m_INVITE_Request_CONF_IMS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact vc_contact, m_Require_prec, vc_route, omit, m_PAssertedID(vc_from.addressField), m_Supported_100rel, m_pChargingVector_icid_TS, m_MBody_SDP(vc_sdp_local) )); //receive 200 OK Loading @@ -2834,6 +2847,9 @@ module CONF_TC_Functions { mw_Contact_conference )); // save conferance URI v_conf := vc_requestUri; f_SendACK(m_ACK_Request_Base( vc_requestUri, vc_callId, Loading @@ -2843,14 +2859,16 @@ module CONF_TC_Functions { vc_via )); v_UE1_Session := f_saveSession(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- UE#1 INVITE UE#2 -----> LibIms_Steps.f_setHeadersREFER_conf(vc_cSeq, f_initSipUrl(c_conferenceProfile_factoryURI)); LibIms_Steps.f_setHeadersREFER(vc_cSeq, c_conferenceProfile_factoryURI); vc_to.addressField.addrSpecUnion := v_conf; f_SendREFER(m_REFER_Request_Privacy( vc_requestUri, v_conf, vc_callId, vc_cSeq, vc_contact, Loading @@ -2862,26 +2880,29 @@ module CONF_TC_Functions { m_Privacy(c_privacy_user) )); v_UE1_Session := f_saveSession(); //receive 202 f_awaitingResponse(mw_Response_Base( c_statusLine202, vc_callId, vc_cSeq )); //await NOTIFY and send reply 200 OK f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request( vc_callId, "active", "application/message/sipfrag", *, m_Event_refer, m_MBody_sipfrag("SIP/2.0 100 Trying") * )); // ---- UE#2 get INVITE -----> f_awaitingINVITE(mw_INVITE_Request_CONF_OIR( // ---- UE#2 get INVITE -----> f_awaitingINVITE(mw_INVITE_Request_CONF( f_initSipUrl(c_userProfile_UE2atSUThome), mw_PAssertedID(mw_AddrUnion_Nameaddr(*,PX_IMS_SUT_UE2_PUBLIC_USER, *)), mw_PAssertedID(mw_PAssertedIDValue(mw_SipUrl_custom(v_conf.userInfo.userOrTelephoneSubscriber, *))), mw_Contact_conference )); Loading @@ -2900,36 +2921,49 @@ module CONF_TC_Functions { f_awaitingACK(mw_ACK_Request_Base(vc_callId)); //await NOTIFY and send reply 200 OK v_UE2_Session := f_saveSession(); f_loadSession(v_UE1_Session); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request( vc_callId, "active", "application/message/sipfrag", "terminated", *, m_Event_refer, m_MBody_sipfrag("SIP/2.0 200 OK") * )); // UE#1 sends BYE LibIms_Steps.f_setHeadersBYE(p_CSeq, c_conferenceProfile_factoryURI); f_SendBYE(m_BYE_Request_Base( f_loadSession(v_UE2_Session); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // disconnect UE2 vc_to := {fieldName := TO_E, addressField := vc_callee_From.addressField, toParams := vc_callee_From.fromParams}; vc_from := {fieldName := FROM_E, addressField := vc_callee_To.addressField, fromParams := vc_callee_To.toParams}; f_terminateCall_IMS( vc_requestUri, vc_callId, p_CSeq, vc_cSeq, vc_from, vc_to, vc_via )); vc_to ); f_awaitingResponse(mw_Response_Base( c_statusLine200, vc_callId, vc_cSeq )); // disconnect UE1 f_loadSession(v_UE1_Session); // UE#2 receives BYE f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); f_terminateCall_IMS( v_conf, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CONF_N09_003(CSeq p_CSeq) runs on ImsComponent { Loading CONF/CONF_TestCases.ttcn3 +5 −5 Original line number Diff line number Diff line Loading @@ -835,19 +835,19 @@ module CONF_TestCases { */ testcase TC_CONF_N09_002(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter { // variable declaration var ImsComponent v_pcscf; var ImsComponent v_scscf; // setup test configuration f_cf_ue_up(v_pcscf); f_cf_as_up(v_scscf); // start component v_pcscf.start(f_TC_CONF_N09_002(p_cSeq)); v_scscf.start(f_TC_CONF_N09_002(p_cSeq)); // synchronize component f_serverSync1Client({c_prDone, c_tbDone}); f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); // tear down test configuration f_cf_ue_down(v_pcscf); f_cf_as_down(v_scscf); } /** Loading Loading
CONF/CONF_TC_Functions.ttcn3 +125 −91 Original line number Diff line number Diff line Loading @@ -2810,20 +2810,33 @@ module CONF_TC_Functions { } function f_TC_CONF_N09_002(CSeq p_CSeq) runs on ImsComponent { var SessionDialog v_UE1_Session, v_UE2_Session; var SipUrl v_conf; f_init_ics_scscf(p_CSeq); LibIms_Steps.f_init_userprofile(c_userProfile_UE1atSUThome); // ---- test body -----> // ---- create conference -----> // send INVITE including conf-factory-uri LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_conferenceProfile_factoryURI); f_SendINVITE(m_INVITE_Request_Base( vc_route := valueof(m_route_interface_CONF(vc_interfaceprofile,vc_userprofile,"orig")); f_SendINVITE(m_INVITE_Request_CONF_IMS( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact vc_contact, m_Require_prec, vc_route, omit, m_PAssertedID(vc_from.addressField), m_Supported_100rel, m_pChargingVector_icid_TS, m_MBody_SDP(vc_sdp_local) )); //receive 200 OK Loading @@ -2834,6 +2847,9 @@ module CONF_TC_Functions { mw_Contact_conference )); // save conferance URI v_conf := vc_requestUri; f_SendACK(m_ACK_Request_Base( vc_requestUri, vc_callId, Loading @@ -2843,14 +2859,16 @@ module CONF_TC_Functions { vc_via )); v_UE1_Session := f_saveSession(); f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); // ---- UE#1 INVITE UE#2 -----> LibIms_Steps.f_setHeadersREFER_conf(vc_cSeq, f_initSipUrl(c_conferenceProfile_factoryURI)); LibIms_Steps.f_setHeadersREFER(vc_cSeq, c_conferenceProfile_factoryURI); vc_to.addressField.addrSpecUnion := v_conf; f_SendREFER(m_REFER_Request_Privacy( vc_requestUri, v_conf, vc_callId, vc_cSeq, vc_contact, Loading @@ -2862,26 +2880,29 @@ module CONF_TC_Functions { m_Privacy(c_privacy_user) )); v_UE1_Session := f_saveSession(); //receive 202 f_awaitingResponse(mw_Response_Base( c_statusLine202, vc_callId, vc_cSeq )); //await NOTIFY and send reply 200 OK f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request( vc_callId, "active", "application/message/sipfrag", *, m_Event_refer, m_MBody_sipfrag("SIP/2.0 100 Trying") * )); // ---- UE#2 get INVITE -----> f_awaitingINVITE(mw_INVITE_Request_CONF_OIR( // ---- UE#2 get INVITE -----> f_awaitingINVITE(mw_INVITE_Request_CONF( f_initSipUrl(c_userProfile_UE2atSUThome), mw_PAssertedID(mw_AddrUnion_Nameaddr(*,PX_IMS_SUT_UE2_PUBLIC_USER, *)), mw_PAssertedID(mw_PAssertedIDValue(mw_SipUrl_custom(v_conf.userInfo.userOrTelephoneSubscriber, *))), mw_Contact_conference )); Loading @@ -2900,36 +2921,49 @@ module CONF_TC_Functions { f_awaitingACK(mw_ACK_Request_Base(vc_callId)); //await NOTIFY and send reply 200 OK v_UE2_Session := f_saveSession(); f_loadSession(v_UE1_Session); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request( vc_callId, "active", "application/message/sipfrag", "terminated", *, m_Event_refer, m_MBody_sipfrag("SIP/2.0 200 OK") * )); // UE#1 sends BYE LibIms_Steps.f_setHeadersBYE(p_CSeq, c_conferenceProfile_factoryURI); f_SendBYE(m_BYE_Request_Base( f_loadSession(v_UE2_Session); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); // disconnect UE2 vc_to := {fieldName := TO_E, addressField := vc_callee_From.addressField, toParams := vc_callee_From.fromParams}; vc_from := {fieldName := FROM_E, addressField := vc_callee_To.addressField, fromParams := vc_callee_To.toParams}; f_terminateCall_IMS( vc_requestUri, vc_callId, p_CSeq, vc_cSeq, vc_from, vc_to, vc_via )); vc_to ); f_awaitingResponse(mw_Response_Base( c_statusLine200, vc_callId, vc_cSeq )); // disconnect UE1 f_loadSession(v_UE1_Session); // UE#2 receives BYE f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); f_terminateCall_IMS( v_conf, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To ); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); } function f_TC_CONF_N09_003(CSeq p_CSeq) runs on ImsComponent { Loading
CONF/CONF_TestCases.ttcn3 +5 −5 Original line number Diff line number Diff line Loading @@ -835,19 +835,19 @@ module CONF_TestCases { */ testcase TC_CONF_N09_002(inout CSeq p_cSeq) runs on ServerSyncComp system TestAdapter { // variable declaration var ImsComponent v_pcscf; var ImsComponent v_scscf; // setup test configuration f_cf_ue_up(v_pcscf); f_cf_as_up(v_scscf); // start component v_pcscf.start(f_TC_CONF_N09_002(p_cSeq)); v_scscf.start(f_TC_CONF_N09_002(p_cSeq)); // synchronize component f_serverSync1Client({c_prDone, c_tbDone}); f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); // tear down test configuration f_cf_ue_down(v_pcscf); f_cf_as_down(v_scscf); } /** Loading