Loading AtsCommon/SS_Ims_PIXITS.ttcn +20 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,26 @@ group CDIV_PIXITS{ /** @desc float default timer value for PX_Timeout_CFNR */ modulepar float PX_Timeout_CFNR := 10.0; /** @desc char default start timer value for PX_CDIV_Start_Time_Subscribe * for CDIV subscription */ modulepar charstring PX_CDIV_Start_Time_Subscribe :="101103120000"; /** @desc char default end timer value for PX_CDIV_End_Time_Subscribe * for CDIV subscription */ modulepar charstring PX_CDIV_End_Time_Subscribe := "101103120000"; /** @desc char default start timer value for PX_CDIV_Start_Time_Notify * for CDIV notification */ modulepar charstring PX_CDIV_Start_Time_Notify := "101103120000"; /** @desc char default end timer value for PX_CDIV_End_Time_Notify * for CDIV notification */ modulepar charstring PX_CDIV_End_Time_Notify := "101103120000"; } group CUG_PIXITS{ Loading CDIV/CDIV_TC_Functions.ttcn +172 −13 Original line number Diff line number Diff line Loading @@ -15,6 +15,11 @@ module CDIV_TC_Functions { import from LibSip_Templates all; import from LibSip_SIPTypesAndValues language "TTCN-3:2005" all; import from org_etsi_uri__ngn_params_xml_comm_div_info language "XSD" all with { extension "File:../xsd/CDIVN.xsd" } import from LibCommon_Sync all; Loading Loading @@ -1377,14 +1382,9 @@ module CDIV_TC_Functions { f_sendResponse(m_Response_ext(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //UE3release f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq)); f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); f_awaitingACK(mw_ACK_Request_Base(vc_callId)); //UE3release f_releseCallatAS(); }// end f_TC_CDIV_N03_001 Loading Loading @@ -1428,19 +1428,178 @@ module CDIV_TC_Functions { f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //UE2release f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); // //UE2release // f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); // // f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq)); // // f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); // // f_awaitingACK(mw_ACK_Request_Base(vc_callId)); f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq)); }// end f_TC_CDIV_N03_002 f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); function f_TC_CDIV_N03_003(in CSeq p_cSeq) runs on ImsComponent { var Diversion_reason_info_type v_ReasonValList[5]:= {int302, int486, int408, int503, int404}; var float v_noReplyTimer := PX_Timeout_CFNR; f_init_ics_scscf(p_cSeq); //correction of user profile: set user2 instead user4 as initiator of call vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; // From, To (register) // send SUBSCRIBE // LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, c_userProfile_AS1); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_CDIV( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, valueof(m_MBody_XML(m_XmlBody_CDIVN(m_comm_div_subs_info ( PX_IMS_SUT_UE1_PUBLIC_USER, PX_IMS_SUT_UE2_PUBLIC_USER, PX_IMS_SUT_UE3_PUBLIC_USER, PX_CDIV_Start_Time_Subscribe, PX_CDIV_End_Time_Subscribe, PX_CDIV_Start_Time_Notify, PX_CDIV_End_Time_Notify, v_ReasonValList[PX_TC_VA-1] ) ))) )); f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MB(vc_callId, mw_MBody_XML(mw_XmlBody_CDIVN( mw_comm_div_ntfy_info )))); //---- test body -----> //correction of user profile: set user4 vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) // send INVITE 1 LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_CDIV( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, valueof(m_MBody_SDP(vc_sdp_local)) )); select (PX_TC_VA){ // PIXIT for TC VARIANT - case (1) {//CFU f_awaitingINVITE(mw_INVITE_Request_Base); } case (2) {//CFB f_awaitingINVITE(mw_INVITE_Request_Base); //UE2 release f_sendResponse(m_Response_warning(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, m_warning486)); f_awaitingACK(mw_ACK_Request_Base(vc_callId)); f_awaitingINVITE(mw_INVITE_Request_Base); } case (3) {//CFNRy f_awaitingINVITE(mw_INVITE_Request_Base); //UE2 release f_sendResponse(m_Response_ext(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_awaitingResponse(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); //No reply timer f_awaitingDelayTimer(v_noReplyTimer); f_awaitingCANCEL(mw_CANCEL_Request_Base(vc_callId)); 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_sendResponse(m_Response_ext(c_statusLine487, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_awaitingACK(mw_ACK_Request_Base(vc_callId)); f_awaitingINVITE(mw_INVITE_Request_Base); } case (4) {//CFNRc f_awaitingINVITE(mw_INVITE_Request_Base); } case else {//CFNL f_awaitingINVITE(mw_INVITE_Request_Base); } } }// end f_TC_CDIV_N03_002 f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MB(vc_callId, mw_MBody_XML(mw_XmlBody_CDIVN(mw_comm_div_ntfy_info)))); }// end f_TC_CDIV_N03_003 } //end group ASdivertingUser_NotDivUser group ASdiverted_to { function f_TC_CDIV_N04_001(in CSeq p_cSeq) runs on ImsComponent { var charstring v_CauseValList[8]:= {"404", "302", "486", "408", "480", "503", "487", "503"}; f_init_ics_scscf(p_cSeq); //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); // ---- test body -----> // send INVITE 1 LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_CDIV( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, m_HistoryInfo( {m_HistoryInfoEntry(m_SipUrl_NumberHostParam(PX_IMS_SUT_UE3_PUBLIC_USER,PX_IMS_SUT_UE3_HOME_DOMAIN,{mw_Cause(v_CauseValList[PX_TC_VA-1])}),{1,1},omit) }), valueof(m_MBody_SDP(vc_sdp_local)) )); f_awaitingINVITE(mw_INVITE_Request_Base); f_sendResponse(m_Response_ext(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_awaitingResponse(mw_Response_CDIV(c_statusLine180, vc_callId, vc_cSeq, mw_HistoryInfo( {mw_HistoryInfoEntry(mw_SipUrl_NumberHostParam(PX_IMS_SUT_UE3_PUBLIC_USER,PX_IMS_SUT_UE3_HOME_DOMAIN,{mw_Cause(v_CauseValList[PX_TC_VA-1])}),{1,1},omit) }), *,*));//Passerted,Privacy f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 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_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_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(mw_BYE_Request_Base(vc_callId)); f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); f_awaitingResponse(mw_Response_warning(c_statusLine200, vc_callId, vc_cSeq, ?)); }// end f_TC_CDIV_N04_001 } // end group ASdiverted_to } //end group Netw Loading CDIV/CDIV_Templates.ttcn +114 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ module CDIV_Templates{ extension "File:../xsd/CDIVN.xsd" } group MessageTemplates{ template INVITE_Request m_INVITE_Request_CDIV( SipUrl p_requestUri, CallId p_callId, Loading Loading @@ -49,6 +51,25 @@ module CDIV_Templates{ } } template SUBSCRIBE_Request m_SUBSCRIBE_Request_CDIV (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb) modifies m_SUBSCRIBE_Request_Base := { requestLine := { method := SUBSCRIBE_E, requestUri := p_requestUri }, msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication}, event := m_Event_reg,//TODO check which event belongs to CDIV event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit}, expires := m_Expires_600000 }, messageBody := p_mb } template Response mw_Response_CDIV(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq, template HistoryInfo p_historyInfo, template PAssertedID p_pAssertedID, template Privacy p_privacy ) modifies mw_Response_Base := { Loading @@ -75,6 +96,7 @@ module CDIV_Templates{ warning := p_warning } } }//end group MessageTemplates template Warning m_warning486 := { fieldName := WARNING_E, Loading Loading @@ -135,4 +157,95 @@ module CDIV_Templates{ template GenericParam mw_Privacy_gen (template charstring p_privacy):= {id:="privacy", paramValue:= pattern "*{p_privacy}*"} group xmlTemplates { template User_selection_criteria_type m_orig_user(template charstring p_userURI) := { anyAttributes := omit, user_info := {m_user_info(p_userURI)} } template User_info_type m_user_info(template charstring p_userURI) := { anyAttributes := omit, user_name := omit, user_URI := p_userURI } template Time_range_selection_criteria_type m_time_selection(template charstring p_start_time,template charstring p_end_time) := { anyAttributes := omit, time_range := {m_time_range(p_start_time, p_end_time)} } template Time_range_type m_time_range(template charstring p_start_time,template charstring p_end_time) := { anyAttributes := omit, start_time := p_start_time, end_time := p_end_time } template Diversion_reason_selection_criteria_type m_reason_type(Diversion_reason_info_type p_enumType) := { anyAttributes := omit, diversion_reason_info := {p_enumType} } template Comm_div_info_type m_comm_div_subs_info(template charstring p_origUserURI, template charstring p_divUserURI, template charstring p_divToUserURI, template charstring p_start_time_subs, template charstring p_end_time_subs, template charstring p_start_time_ntfy, template charstring p_end_time_ntfy, Diversion_reason_info_type p_enumReason) := { entity := "entity", comm_div_subs_info := { anyAttributes := omit, comm_div_selection_criteria := { anyAttributes:= omit, originating_user_selection_criteria:= m_orig_user(p_origUserURI), diverting_user_selection_criteria:= p_divUserURI, diverted_to_user_selection_criteria:= p_divToUserURI, diversion_time_selection_criteria:= m_time_selection(p_start_time_subs,p_end_time_subs), diversion_reason_selection_criteria:= m_reason_type(p_enumReason), elem:= omit }, comm_div_ntfy_trigger_criteria := { anyAttributes := omit, notification_time_selection_criteria := m_time_selection(p_start_time_ntfy,p_end_time_ntfy), presence_status_selection_criteria := omit, notification_buffer_interval := omit, elem := omit }, comm_div_info_selection_criteria := omit, elem := omit }, comm_div_ntfy_info := omit, elem := omit } template Comm_div_info_type mw_comm_div_ntfy_info := { entity := "entity", comm_div_subs_info := omit, comm_div_ntfy_info := { anyAttributes := *, originating_user_info := ?, diverting_user_info := ?, diverted_to_user_info := ?, diversion_time_info := ?,//"101231235959" yymmddhhmmss diversion_reason_info := ?, diversion_rule_info := { anyAttributes := *, diversion_rule := "Any text" }, elem := * }, elem := omit } }//end xmlTemplates group } No newline at end of file CDIV/CDIV_TestCases.ttcn +43 −0 Original line number Diff line number Diff line Loading @@ -709,8 +709,51 @@ module CDIV_TestCases { f_cf_as_down(v_scscf); } /** * @desc TC_CDIV_N03_003 * @param p_cSeq_s Transaction Id */ testcase TC_CDIV_N03_003(inout CSeq p_CSeq) runs on ServerSyncComp system TestAdapter { // variable declaration var ImsComponent v_scscf; // setup test configuration f_cf_as_up(v_scscf); // start component v_scscf.start(f_TC_CDIV_N03_003(p_CSeq)); // synchronize component f_serverSync1Client({c_tbDone}); // tear down test configuration f_cf_as_down(v_scscf); } } //end group ASdivertingUser_NotDivUser group ASdiverted_to { /** * @desc TC_CDIV_N04_001 * @param p_cSeq_s Transaction Id */ testcase TC_CDIV_N04_001(inout CSeq p_CSeq) runs on ServerSyncComp system TestAdapter { // variable declaration var ImsComponent v_scscf; // setup test configuration f_cf_as_up(v_scscf); // start component v_scscf.start(f_TC_CDIV_N04_001(p_CSeq)); // synchronize component f_serverSync1Client({c_tbDone}); // tear down test configuration f_cf_as_down(v_scscf); } } // end group ASdiverted_to } //end group Netw Loading Loading
AtsCommon/SS_Ims_PIXITS.ttcn +20 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,26 @@ group CDIV_PIXITS{ /** @desc float default timer value for PX_Timeout_CFNR */ modulepar float PX_Timeout_CFNR := 10.0; /** @desc char default start timer value for PX_CDIV_Start_Time_Subscribe * for CDIV subscription */ modulepar charstring PX_CDIV_Start_Time_Subscribe :="101103120000"; /** @desc char default end timer value for PX_CDIV_End_Time_Subscribe * for CDIV subscription */ modulepar charstring PX_CDIV_End_Time_Subscribe := "101103120000"; /** @desc char default start timer value for PX_CDIV_Start_Time_Notify * for CDIV notification */ modulepar charstring PX_CDIV_Start_Time_Notify := "101103120000"; /** @desc char default end timer value for PX_CDIV_End_Time_Notify * for CDIV notification */ modulepar charstring PX_CDIV_End_Time_Notify := "101103120000"; } group CUG_PIXITS{ Loading
CDIV/CDIV_TC_Functions.ttcn +172 −13 Original line number Diff line number Diff line Loading @@ -15,6 +15,11 @@ module CDIV_TC_Functions { import from LibSip_Templates all; import from LibSip_SIPTypesAndValues language "TTCN-3:2005" all; import from org_etsi_uri__ngn_params_xml_comm_div_info language "XSD" all with { extension "File:../xsd/CDIVN.xsd" } import from LibCommon_Sync all; Loading Loading @@ -1377,14 +1382,9 @@ module CDIV_TC_Functions { f_sendResponse(m_Response_ext(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //UE3release f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq)); f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); f_awaitingACK(mw_ACK_Request_Base(vc_callId)); //UE3release f_releseCallatAS(); }// end f_TC_CDIV_N03_001 Loading Loading @@ -1428,19 +1428,178 @@ module CDIV_TC_Functions { f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); //UE2release f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); // //UE2release // f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); // // f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq)); // // f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); // // f_awaitingACK(mw_ACK_Request_Base(vc_callId)); f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq)); }// end f_TC_CDIV_N03_002 f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via)); function f_TC_CDIV_N03_003(in CSeq p_cSeq) runs on ImsComponent { var Diversion_reason_info_type v_ReasonValList[5]:= {int302, int486, int408, int503, int404}; var float v_noReplyTimer := PX_Timeout_CFNR; f_init_ics_scscf(p_cSeq); //correction of user profile: set user2 instead user4 as initiator of call vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER; // From, To (register) // send SUBSCRIBE // LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, c_userProfile_AS1); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_CDIV( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, valueof(m_MBody_XML(m_XmlBody_CDIVN(m_comm_div_subs_info ( PX_IMS_SUT_UE1_PUBLIC_USER, PX_IMS_SUT_UE2_PUBLIC_USER, PX_IMS_SUT_UE3_PUBLIC_USER, PX_CDIV_Start_Time_Subscribe, PX_CDIV_End_Time_Subscribe, PX_CDIV_Start_Time_Notify, PX_CDIV_End_Time_Notify, v_ReasonValList[PX_TC_VA-1] ) ))) )); f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MB(vc_callId, mw_MBody_XML(mw_XmlBody_CDIVN( mw_comm_div_ntfy_info )))); //---- test body -----> //correction of user profile: set user4 vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT; // contact (simulated UE) vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR; // contact vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN; // From, To (register) vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER; // From, To (register) // send INVITE 1 LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_CDIV( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, omit, valueof(m_MBody_SDP(vc_sdp_local)) )); select (PX_TC_VA){ // PIXIT for TC VARIANT - case (1) {//CFU f_awaitingINVITE(mw_INVITE_Request_Base); } case (2) {//CFB f_awaitingINVITE(mw_INVITE_Request_Base); //UE2 release f_sendResponse(m_Response_warning(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, m_warning486)); f_awaitingACK(mw_ACK_Request_Base(vc_callId)); f_awaitingINVITE(mw_INVITE_Request_Base); } case (3) {//CFNRy f_awaitingINVITE(mw_INVITE_Request_Base); //UE2 release f_sendResponse(m_Response_ext(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_awaitingResponse(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); //No reply timer f_awaitingDelayTimer(v_noReplyTimer); f_awaitingCANCEL(mw_CANCEL_Request_Base(vc_callId)); 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_sendResponse(m_Response_ext(c_statusLine487, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_awaitingACK(mw_ACK_Request_Base(vc_callId)); f_awaitingINVITE(mw_INVITE_Request_Base); } case (4) {//CFNRc f_awaitingINVITE(mw_INVITE_Request_Base); } case else {//CFNL f_awaitingINVITE(mw_INVITE_Request_Base); } } }// end f_TC_CDIV_N03_002 f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MB(vc_callId, mw_MBody_XML(mw_XmlBody_CDIVN(mw_comm_div_ntfy_info)))); }// end f_TC_CDIV_N03_003 } //end group ASdivertingUser_NotDivUser group ASdiverted_to { function f_TC_CDIV_N04_001(in CSeq p_cSeq) runs on ImsComponent { var charstring v_CauseValList[8]:= {"404", "302", "486", "408", "480", "503", "487", "503"}; f_init_ics_scscf(p_cSeq); //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS); // ---- test body -----> // send INVITE 1 LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome); f_SendINVITE(m_INVITE_Request_CDIV( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_contact, m_HistoryInfo( {m_HistoryInfoEntry(m_SipUrl_NumberHostParam(PX_IMS_SUT_UE3_PUBLIC_USER,PX_IMS_SUT_UE3_HOME_DOMAIN,{mw_Cause(v_CauseValList[PX_TC_VA-1])}),{1,1},omit) }), valueof(m_MBody_SDP(vc_sdp_local)) )); f_awaitingINVITE(mw_INVITE_Request_Base); f_sendResponse(m_Response_ext(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute())); f_awaitingResponse(mw_Response_CDIV(c_statusLine180, vc_callId, vc_cSeq, mw_HistoryInfo( {mw_HistoryInfoEntry(mw_SipUrl_NumberHostParam(PX_IMS_SUT_UE3_PUBLIC_USER,PX_IMS_SUT_UE3_HOME_DOMAIN,{mw_Cause(v_CauseValList[PX_TC_VA-1])}),{1,1},omit) }), *,*));//Passerted,Privacy f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 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_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_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(mw_BYE_Request_Base(vc_callId)); f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); f_awaitingResponse(mw_Response_warning(c_statusLine200, vc_callId, vc_cSeq, ?)); }// end f_TC_CDIV_N04_001 } // end group ASdiverted_to } //end group Netw Loading
CDIV/CDIV_Templates.ttcn +114 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ module CDIV_Templates{ extension "File:../xsd/CDIVN.xsd" } group MessageTemplates{ template INVITE_Request m_INVITE_Request_CDIV( SipUrl p_requestUri, CallId p_callId, Loading Loading @@ -49,6 +51,25 @@ module CDIV_Templates{ } } template SUBSCRIBE_Request m_SUBSCRIBE_Request_CDIV (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact, template MessageBody p_mb) modifies m_SUBSCRIBE_Request_Base := { requestLine := { method := SUBSCRIBE_E, requestUri := p_requestUri }, msgHeader := { contact := p_contact, contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_xmlAplication}, event := m_Event_reg,//TODO check which event belongs to CDIV event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit}, expires := m_Expires_600000 }, messageBody := p_mb } template Response mw_Response_CDIV(template StatusLine p_statusLine, template CallId p_callId, template CSeq p_cSeq, template HistoryInfo p_historyInfo, template PAssertedID p_pAssertedID, template Privacy p_privacy ) modifies mw_Response_Base := { Loading @@ -75,6 +96,7 @@ module CDIV_Templates{ warning := p_warning } } }//end group MessageTemplates template Warning m_warning486 := { fieldName := WARNING_E, Loading Loading @@ -135,4 +157,95 @@ module CDIV_Templates{ template GenericParam mw_Privacy_gen (template charstring p_privacy):= {id:="privacy", paramValue:= pattern "*{p_privacy}*"} group xmlTemplates { template User_selection_criteria_type m_orig_user(template charstring p_userURI) := { anyAttributes := omit, user_info := {m_user_info(p_userURI)} } template User_info_type m_user_info(template charstring p_userURI) := { anyAttributes := omit, user_name := omit, user_URI := p_userURI } template Time_range_selection_criteria_type m_time_selection(template charstring p_start_time,template charstring p_end_time) := { anyAttributes := omit, time_range := {m_time_range(p_start_time, p_end_time)} } template Time_range_type m_time_range(template charstring p_start_time,template charstring p_end_time) := { anyAttributes := omit, start_time := p_start_time, end_time := p_end_time } template Diversion_reason_selection_criteria_type m_reason_type(Diversion_reason_info_type p_enumType) := { anyAttributes := omit, diversion_reason_info := {p_enumType} } template Comm_div_info_type m_comm_div_subs_info(template charstring p_origUserURI, template charstring p_divUserURI, template charstring p_divToUserURI, template charstring p_start_time_subs, template charstring p_end_time_subs, template charstring p_start_time_ntfy, template charstring p_end_time_ntfy, Diversion_reason_info_type p_enumReason) := { entity := "entity", comm_div_subs_info := { anyAttributes := omit, comm_div_selection_criteria := { anyAttributes:= omit, originating_user_selection_criteria:= m_orig_user(p_origUserURI), diverting_user_selection_criteria:= p_divUserURI, diverted_to_user_selection_criteria:= p_divToUserURI, diversion_time_selection_criteria:= m_time_selection(p_start_time_subs,p_end_time_subs), diversion_reason_selection_criteria:= m_reason_type(p_enumReason), elem:= omit }, comm_div_ntfy_trigger_criteria := { anyAttributes := omit, notification_time_selection_criteria := m_time_selection(p_start_time_ntfy,p_end_time_ntfy), presence_status_selection_criteria := omit, notification_buffer_interval := omit, elem := omit }, comm_div_info_selection_criteria := omit, elem := omit }, comm_div_ntfy_info := omit, elem := omit } template Comm_div_info_type mw_comm_div_ntfy_info := { entity := "entity", comm_div_subs_info := omit, comm_div_ntfy_info := { anyAttributes := *, originating_user_info := ?, diverting_user_info := ?, diverted_to_user_info := ?, diversion_time_info := ?,//"101231235959" yymmddhhmmss diversion_reason_info := ?, diversion_rule_info := { anyAttributes := *, diversion_rule := "Any text" }, elem := * }, elem := omit } }//end xmlTemplates group } No newline at end of file
CDIV/CDIV_TestCases.ttcn +43 −0 Original line number Diff line number Diff line Loading @@ -709,8 +709,51 @@ module CDIV_TestCases { f_cf_as_down(v_scscf); } /** * @desc TC_CDIV_N03_003 * @param p_cSeq_s Transaction Id */ testcase TC_CDIV_N03_003(inout CSeq p_CSeq) runs on ServerSyncComp system TestAdapter { // variable declaration var ImsComponent v_scscf; // setup test configuration f_cf_as_up(v_scscf); // start component v_scscf.start(f_TC_CDIV_N03_003(p_CSeq)); // synchronize component f_serverSync1Client({c_tbDone}); // tear down test configuration f_cf_as_down(v_scscf); } } //end group ASdivertingUser_NotDivUser group ASdiverted_to { /** * @desc TC_CDIV_N04_001 * @param p_cSeq_s Transaction Id */ testcase TC_CDIV_N04_001(inout CSeq p_CSeq) runs on ServerSyncComp system TestAdapter { // variable declaration var ImsComponent v_scscf; // setup test configuration f_cf_as_up(v_scscf); // start component v_scscf.start(f_TC_CDIV_N04_001(p_CSeq)); // synchronize component f_serverSync1Client({c_tbDone}); // tear down test configuration f_cf_as_down(v_scscf); } } // end group ASdiverted_to } //end group Netw Loading