Loading AtsCommon/SS_Ims_Functions.ttcn +131 −4 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 { Loading @@ -78,7 +100,7 @@ module IMS_SS_Functions { f_awaitingUPDATE(p_request); } } }//end group messageFunctions group imsSteps { Loading Loading @@ -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 AtsCommon/SS_Ims_TestConfiguration.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -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"); Loading CDIV/CDIV_TC_Functions.ttcn +3 −2 Original line number Diff line number Diff line Loading @@ -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{ Loading CONF/CONF_Steps.ttcn3 +0 −63 Original line number Diff line number Diff line Loading @@ -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; Loading CW/CW_TC_Functions.ttcn +132 −46 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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{ Loading Loading @@ -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 /** * Loading @@ -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 Loading @@ -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({}))))); Loading Loading @@ -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({}))))); Loading Loading @@ -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({}))))); Loading Loading @@ -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({}))))); Loading Loading @@ -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 Loading
AtsCommon/SS_Ims_Functions.ttcn +131 −4 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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 { Loading @@ -78,7 +100,7 @@ module IMS_SS_Functions { f_awaitingUPDATE(p_request); } } }//end group messageFunctions group imsSteps { Loading Loading @@ -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
AtsCommon/SS_Ims_TestConfiguration.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -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"); Loading
CDIV/CDIV_TC_Functions.ttcn +3 −2 Original line number Diff line number Diff line Loading @@ -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{ Loading
CONF/CONF_Steps.ttcn3 +0 −63 Original line number Diff line number Diff line Loading @@ -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; Loading
CW/CW_TC_Functions.ttcn +132 −46 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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{ Loading Loading @@ -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 /** * Loading @@ -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 Loading @@ -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({}))))); Loading Loading @@ -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({}))))); Loading Loading @@ -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({}))))); Loading Loading @@ -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({}))))); Loading Loading @@ -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