Loading CONF/CONF_Steps.ttcn3 +141 −0 Original line number Original line Diff line number Diff line Loading @@ -400,6 +400,100 @@ module CONF_Steps { )); )); } } function f_referConferenceReplaceCall( in integer p_to_user, in SipUrl p_conferenceUri, inout SessionDialog p_org_Session, inout SessionDialog p_term_Session, inout SessionDialog p_existing_Session ) runs on ImsComponent { var charstring v_callId := p_existing_Session.callId.callid; var charstring v_toTag := p_existing_Session.calleeTo.toParams[0].paramValue; var charstring v_fromTag := p_existing_Session.callerFrom.fromParams[0].paramValue; var charstring v_string := "INVITE?Replaces=" & v_callId & ";to-tag=" & v_toTag & ";from-tag=" & v_fromTag; f_loadSession(p_org_Session); LibIms_Steps.f_setHeadersREFER(vc_cSeq, c_conferenceProfile_factoryURI); vc_to.addressField.addrSpecUnion := p_conferenceUri; f_SendREFER(m_REFER_Request_Base( p_conferenceUri, vc_callId, vc_cSeq, vc_contact, vc_from, vc_to, vc_via, m_ReferTo_SipUrl(f_initSipUrl(p_to_user), v_string), m_ReferredBy_SipUrl(f_initSipUrl(vc_userprofile.id)) )); p_org_Session := f_saveSession(); //receive 202 f_awaitingResponse(mw_Response_Base( c_statusLine202, vc_callId, vc_cSeq )); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request( vc_callId, "active", *, m_Event_refer, * )); // ---- UE#2 get INVITE -----> f_awaitingINVITE(mw_INVITE_Request_CONF( f_initSipUrl(p_to_user), mw_PAssertedID(mw_PAssertedIDValue(mw_SipUrl_custom(p_conferenceUri.userInfo.userOrTelephoneSubscriber, *))), mw_Contact_conference )); f_sendResponse(m_Response_18XonINVITE( c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact )); f_sendResponse(m_Response_2xxonINVITE( c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_route(), valueof(m_MBody_SDP(vc_sdp_local)) )); f_awaitingACK(mw_ACK_Request_Base(vc_callId)); vc_caller_From := vc_callee_From; vc_caller_To := vc_callee_To; p_term_Session := f_saveSession(); f_loadSession(p_org_Session); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request( vc_callId, "terminated", *, m_Event_refer, * )); } /** /** * * Loading Loading @@ -728,6 +822,42 @@ module CONF_Steps { )); )); } } function f_terminateSessionCallee(inout SessionDialog p_org_Session, inout SessionDialog p_term_Session) runs on ImsComponent { f_loadSession(p_org_Session); // UE#1 sends BYE LibSip_Steps.f_setHeadersBYE(vc_cSeq); vc_to := {fieldName := TO_E, addressField := vc_caller_From.addressField, toParams := vc_caller_From.fromParams}; vc_from := {fieldName := FROM_E, addressField := vc_caller_To.addressField, fromParams := vc_caller_To.toParams}; f_SendBYE(m_BYE_Request_Base( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via )); p_org_Session := f_saveSession(); f_loadSession(p_term_Session); f_awaitingBYE_sendReply(mw_BYE_Request_Base(?)); p_term_Session := f_saveSession(); f_loadSession(p_org_Session); f_awaitingResponse(mw_Response_Base( c_statusLine200, vc_callId, vc_cSeq )); } function f_initSession(inout SessionDialog p_session,in integer p_profile) runs on ImsComponent { function f_initSession(inout SessionDialog p_session,in integer p_profile) runs on ImsComponent { LibIms_Steps.f_init_userprofile(p_profile); LibIms_Steps.f_init_userprofile(p_profile); Loading @@ -742,6 +872,17 @@ module CONF_Steps { p_session := f_saveSession(); p_session := f_saveSession(); } } function f_prepareUri(SipUrl p_user, CallId p_callid, To p_to, From p_from) return SipUrl { var charstring v_string := "Callid=" & p_callid.callid & "&From+" & p_from.addressField.nameAddr.addrSpec.userInfo.userOrTelephoneSubscriber & "@" & p_from.addressField.nameAddr.addrSpec.hostPort.host & "%3bTag%3D" & p_from.fromParams[0].paramValue & "&To=" & p_to.addressField.nameAddr.addrSpec.userInfo.userOrTelephoneSubscriber & "@" & p_to.addressField.nameAddr.addrSpec.hostPort.host & "%3bTag%3D" & p_to.toParams[0].paramValue; p_user.headers := { {id := v_string} } return p_user; } Loading CONF/CONF_TC_Functions.ttcn3 +514 −171 File changed.Preview size limit exceeded, changes collapsed. Show changes CONF/CONF_Templates.ttcn3 +23 −0 Original line number Original line Diff line number Diff line Loading @@ -298,6 +298,29 @@ template Resource_lists mw_Resource_lists( messageBody := p_mb messageBody := p_mb } } template INVITE_Request m_INVITE_Request_CONF_RL_IMS ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) modifies m_INVITE_Request_CONF_IMS := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart} } } template Route m_route_interface_CONF (in ImsInterfaceProfile p_interfaceprofile,in SipUserProfile p_userprofile, charstring p_destination):= { template Route m_route_interface_CONF (in ImsInterfaceProfile p_interfaceprofile,in SipUserProfile p_userprofile, charstring p_destination):= { fieldName := ROUTE_E, fieldName := ROUTE_E, routeBody := { routeBody := { Loading CONF/CONF_TestCases.ttcn3 +2 −2 Original line number Original line Diff line number Diff line Loading @@ -379,7 +379,7 @@ module CONF_TestCases { v_scscf.start(f_TC_CONF_N03_007(p_cSeq)); v_scscf.start(f_TC_CONF_N03_007(p_cSeq)); // synchronize component // synchronize component f_serverSync1Client({c_prDone, c_tbDone}); f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); // tear down test configuration // tear down test configuration f_cf_as_down(v_scscf); f_cf_as_down(v_scscf); Loading @@ -401,7 +401,7 @@ module CONF_TestCases { v_scscf.start(f_TC_CONF_N03_008(p_cSeq)); v_scscf.start(f_TC_CONF_N03_008(p_cSeq)); // synchronize component // synchronize component f_serverSync1Client({c_prDone, c_tbDone}); f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); // tear down test configuration // tear down test configuration f_cf_as_down(v_scscf); f_cf_as_down(v_scscf); Loading Loading
CONF/CONF_Steps.ttcn3 +141 −0 Original line number Original line Diff line number Diff line Loading @@ -400,6 +400,100 @@ module CONF_Steps { )); )); } } function f_referConferenceReplaceCall( in integer p_to_user, in SipUrl p_conferenceUri, inout SessionDialog p_org_Session, inout SessionDialog p_term_Session, inout SessionDialog p_existing_Session ) runs on ImsComponent { var charstring v_callId := p_existing_Session.callId.callid; var charstring v_toTag := p_existing_Session.calleeTo.toParams[0].paramValue; var charstring v_fromTag := p_existing_Session.callerFrom.fromParams[0].paramValue; var charstring v_string := "INVITE?Replaces=" & v_callId & ";to-tag=" & v_toTag & ";from-tag=" & v_fromTag; f_loadSession(p_org_Session); LibIms_Steps.f_setHeadersREFER(vc_cSeq, c_conferenceProfile_factoryURI); vc_to.addressField.addrSpecUnion := p_conferenceUri; f_SendREFER(m_REFER_Request_Base( p_conferenceUri, vc_callId, vc_cSeq, vc_contact, vc_from, vc_to, vc_via, m_ReferTo_SipUrl(f_initSipUrl(p_to_user), v_string), m_ReferredBy_SipUrl(f_initSipUrl(vc_userprofile.id)) )); p_org_Session := f_saveSession(); //receive 202 f_awaitingResponse(mw_Response_Base( c_statusLine202, vc_callId, vc_cSeq )); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request( vc_callId, "active", *, m_Event_refer, * )); // ---- UE#2 get INVITE -----> f_awaitingINVITE(mw_INVITE_Request_CONF( f_initSipUrl(p_to_user), mw_PAssertedID(mw_PAssertedIDValue(mw_SipUrl_custom(p_conferenceUri.userInfo.userOrTelephoneSubscriber, *))), mw_Contact_conference )); f_sendResponse(m_Response_18XonINVITE( c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact )); f_sendResponse(m_Response_2xxonINVITE( c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, vc_contact, f_route(), valueof(m_MBody_SDP(vc_sdp_local)) )); f_awaitingACK(mw_ACK_Request_Base(vc_callId)); vc_caller_From := vc_callee_From; vc_caller_To := vc_callee_To; p_term_Session := f_saveSession(); f_loadSession(p_org_Session); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request( vc_callId, "terminated", *, m_Event_refer, * )); } /** /** * * Loading Loading @@ -728,6 +822,42 @@ module CONF_Steps { )); )); } } function f_terminateSessionCallee(inout SessionDialog p_org_Session, inout SessionDialog p_term_Session) runs on ImsComponent { f_loadSession(p_org_Session); // UE#1 sends BYE LibSip_Steps.f_setHeadersBYE(vc_cSeq); vc_to := {fieldName := TO_E, addressField := vc_caller_From.addressField, toParams := vc_caller_From.fromParams}; vc_from := {fieldName := FROM_E, addressField := vc_caller_To.addressField, fromParams := vc_caller_To.toParams}; f_SendBYE(m_BYE_Request_Base( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via )); p_org_Session := f_saveSession(); f_loadSession(p_term_Session); f_awaitingBYE_sendReply(mw_BYE_Request_Base(?)); p_term_Session := f_saveSession(); f_loadSession(p_org_Session); f_awaitingResponse(mw_Response_Base( c_statusLine200, vc_callId, vc_cSeq )); } function f_initSession(inout SessionDialog p_session,in integer p_profile) runs on ImsComponent { function f_initSession(inout SessionDialog p_session,in integer p_profile) runs on ImsComponent { LibIms_Steps.f_init_userprofile(p_profile); LibIms_Steps.f_init_userprofile(p_profile); Loading @@ -742,6 +872,17 @@ module CONF_Steps { p_session := f_saveSession(); p_session := f_saveSession(); } } function f_prepareUri(SipUrl p_user, CallId p_callid, To p_to, From p_from) return SipUrl { var charstring v_string := "Callid=" & p_callid.callid & "&From+" & p_from.addressField.nameAddr.addrSpec.userInfo.userOrTelephoneSubscriber & "@" & p_from.addressField.nameAddr.addrSpec.hostPort.host & "%3bTag%3D" & p_from.fromParams[0].paramValue & "&To=" & p_to.addressField.nameAddr.addrSpec.userInfo.userOrTelephoneSubscriber & "@" & p_to.addressField.nameAddr.addrSpec.hostPort.host & "%3bTag%3D" & p_to.toParams[0].paramValue; p_user.headers := { {id := v_string} } return p_user; } Loading
CONF/CONF_TC_Functions.ttcn3 +514 −171 File changed.Preview size limit exceeded, changes collapsed. Show changes
CONF/CONF_Templates.ttcn3 +23 −0 Original line number Original line Diff line number Diff line Loading @@ -298,6 +298,29 @@ template Resource_lists mw_Resource_lists( messageBody := p_mb messageBody := p_mb } } template INVITE_Request m_INVITE_Request_CONF_RL_IMS ( SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template Require p_require, template Route p_route, template RecordRoute p_recordRoute, template PAssertedID p_pAssertedID, template Supported p_supported, template PChargingVector p_pChargingVector, template MessageBody p_mb ) modifies m_INVITE_Request_CONF_IMS := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_mimeMultipart} } } template Route m_route_interface_CONF (in ImsInterfaceProfile p_interfaceprofile,in SipUserProfile p_userprofile, charstring p_destination):= { template Route m_route_interface_CONF (in ImsInterfaceProfile p_interfaceprofile,in SipUserProfile p_userprofile, charstring p_destination):= { fieldName := ROUTE_E, fieldName := ROUTE_E, routeBody := { routeBody := { Loading
CONF/CONF_TestCases.ttcn3 +2 −2 Original line number Original line Diff line number Diff line Loading @@ -379,7 +379,7 @@ module CONF_TestCases { v_scscf.start(f_TC_CONF_N03_007(p_cSeq)); v_scscf.start(f_TC_CONF_N03_007(p_cSeq)); // synchronize component // synchronize component f_serverSync1Client({c_prDone, c_tbDone}); f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); // tear down test configuration // tear down test configuration f_cf_as_down(v_scscf); f_cf_as_down(v_scscf); Loading @@ -401,7 +401,7 @@ module CONF_TestCases { v_scscf.start(f_TC_CONF_N03_008(p_cSeq)); v_scscf.start(f_TC_CONF_N03_008(p_cSeq)); // synchronize component // synchronize component f_serverSync1Client({c_prDone, c_tbDone}); f_serverSync1Client({c_prDone, c_tbDone, c_poDone}); // tear down test configuration // tear down test configuration f_cf_as_down(v_scscf); f_cf_as_down(v_scscf); Loading