Loading MWI/MWI_TC_Functions.ttcn +534 −12 Original line number Diff line number Diff line module MWI_TC_Functions { import from LibIms_Templates all; import from LibIms_SIPTypesAndValues {const c_userProfile_UE1atSUThome;} import from LibIms_Steps {function f_IMS_postamble_awaitDeRegistration;} import from LibIms_SIPTypesAndValues {const c_userProfile_UE1atSUThome, c_userProfile_AS1;} import from LibIms_Steps {function f_IMS_postamble_awaitDeRegistration, f_initSipUrl;} import from LibCommon_Sync all; import from LibSip_Templates all; import from LibSip_Steps language "TTCN-3:2005" all; Loading @@ -10,6 +10,7 @@ module MWI_TC_Functions { import from LibSip_SIPTypesAndValues language "TTCN-3:2005" all; import from LibIms_Interface {type ImsComponent;} import from LibIms_PIXITS all; import from LibSip_PIXITS {modulepar PX_SIP_TWAIT;} modulepar { /** @desc charstring, for the public service identity of the Message Account (MA) Loading @@ -17,9 +18,151 @@ module MWI_TC_Functions { charstring PX_IMS_TS_MA; } modulepar { /** @desc float, expiry timer PX_Timeout_Subscription for Subscription */ float PX_Timeout_Subscription := 12.0; } // IMS ETSI name MWI application const charstring c_imsEtsiMwiApplication := "application/simple-message-summary"; group SMSTypes{//TODO group shall be moved into LibSIPTypesAndValues or into new module LibSip_SMSTypes //TODO add (SMS sms) into type union MessageBody{ in module LibSIPTypesAndValues type record SMS { //Simple_message_summary Msg_status_line msg_status_line, Msg_account msg_account optional, Msg_summary_line_list msg_summary_line_list optional, Opt_msg_headers opt_msg_headers optional } type record Msg_status_line { charstring msg_type, charstring msg_status } type record Msg_account { charstring msg_type_account, SipUrl account_URI } type set of Msg_summary_line Msg_summary_line_list; type record Msg_summary_line { charstring msg_context_class, charstring msgs, charstring urgent_msgs optional } type set of charstring Opt_msg_headers; //type integer msgcount length(1); //msgs and urgent_msgs can be dividet into subtypes } group Templates { group Templates_SMS { // //TODO shall be moved into LibSip_Templates // template MessageBody m_mBody_SMS(template SMS p_SMS):= // { // sms := p_SMS // }; // // //TODO shall be moved into LibSip_Templates // template MessageBody mw_mBody_SMS(template SMS p_SMS):= // { // sms := p_SMS // }; template SMS m_SMS(template Msg_summary_line_list p_summaryLineList) := { msg_status_line := m_msgStatusLine_yes, msg_account := m_msgAccount, msg_summary_line_list :=p_summaryLineList, opt_msg_headers := omit } template SMS mw_SMS := { msg_status_line := ?, msg_account := *, msg_summary_line_list := *, opt_msg_headers := * } template SMS mw_SMS_yes := { msg_status_line := mw_msgStatusLine_yes, msg_account := *, msg_summary_line_list := *, opt_msg_headers := * } template SMS mw_SMS_yesUri := { msg_status_line := mw_msgStatusLine_yes, msg_account := mw_msgAccount, msg_summary_line_list := *, opt_msg_headers := * } template SMS mw_SMS_yesVoice := { msg_status_line := mw_msgStatusLine_yes, msg_account := *, msg_summary_line_list := {mw_msgSummaryLine("voice-message")}, opt_msg_headers := * } template SMS mw_SMS_yesUriVoice := { msg_status_line := mw_msgStatusLine_yes, msg_account := mw_msgAccount, msg_summary_line_list := {mw_msgSummaryLine("voice-message")}, opt_msg_headers := * } template Msg_status_line m_msgStatusLine_yes:= { msg_type := "Message-Waiting", msg_status := "yes" } template Msg_status_line mw_msgStatusLine_yes:= { msg_type := "Message-Waiting", msg_status := "yes" } template Msg_account m_msgAccount := { msg_type_account := "Message-Account", account_URI := m_SipUrl_NumberHostParam(PX_IMS_SUT_UE2_PUBLIC_USER,PX_IMS_SUT_UE2_HOME_DOMAIN,omit) } template Msg_account mw_msgAccount := { msg_type_account := "Message-Account", account_URI := ? } template Msg_summary_line m_msgSummaryLine(template charstring p_msgContexClass,template charstring p_msgs,template charstring p_urgent_msgs) := { msg_context_class := p_msgContexClass, msgs := p_msgs, urgent_msgs := p_urgent_msgs } template Msg_summary_line mw_msgSummaryLine(template charstring p_msgContexClass) := { msg_context_class := p_msgContexClass, msgs := ?, urgent_msgs :=* } } //end group Templates_SMS template Event m_Event_mwi := { fieldName := EVENT_E, Loading Loading @@ -48,6 +191,27 @@ module MWI_TC_Functions { acceptParam := *}} }; template SubscriptionState mw_SubscriptionState_active := { fieldName := SUBSCRIPTION_STATE_E, subState := "active", substateParams := {{id:="expires",paramValue:=?}} } template SubscriptionState mw_SubscriptionState_active_expires := { fieldName := SUBSCRIPTION_STATE_E, subState := "active", substateParams := omit } template SubscriptionState mw_SubscriptionState_terminated := { fieldName := SUBSCRIPTION_STATE_E, subState := "terminated", substateParams := {{id:="reason",paramValue:="timeout"}} } template SUBSCRIBE_Request m_SUBSCRIBE_Request_MWI (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, Loading Loading @@ -106,19 +270,45 @@ module MWI_TC_Functions { messageBody := p_mb } template NOTIFY_Request mw_NOTIFY_Request_MWI(CallId p_callId, template NOTIFY_Request mw_NOTIFY_Request_MWI(template CallId p_callId, template SubscriptionState p_subState, template MessageBody p_mb) modifies mw_NOTIFY_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentLength := {fieldName := CONTENT_LENGTH_E, len:= ?/*f_MessageBodyLength(valueof(p_mb))*/}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_imsEtsiMwiApplication}, event := mw_Event_mwi, subscriptionState := m_SubscriptionState_active subscriptionState := p_subState }, messageBody := p_mb } }//end group Templates group Steps{ /** * @desc await NOTIFY request */ function f_awaitingNOTIFY(in template NOTIFY_Request p_MSG) runs on ImsComponent { var NOTIFY_Request v_MSG; tc_wait.start(PX_SIP_TWAIT); alt { [] SIPP.receive(p_MSG)-> value v_MSG sender vc_sent_label { tc_wait.stop; f_getRouteMapIntoRecordRoute(vc_cSeq, v_MSG); f_setHeadersOnReceiptOfRequest(v_MSG); } } } // end of f_awaitingNOTIFY_sendReply } group ActionsAtTheUE { function f_TC_MWI_U01_001(CSeq p_CSeq) runs on ImsComponent { Loading Loading @@ -306,7 +496,12 @@ group ActionsAtTheUE { vc_from, vc_to, vc_via, m_mBody_plainText("blabla"))); /*m_mBody_SMS(m_SMS({m_msgSummaryLine("Voice-Message","4/1","(2/0)"), m_msgSummaryLine("Video-Message","3/1","(1/0)"), m_msgSummaryLine("Fax-Message","2/1","(0/1)") }))*/ m_mBody_plainText("blabla") ));//TODO MBody f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); Loading Loading @@ -340,7 +535,12 @@ group ActionsAtTheUE { vc_from, vc_to, vc_via, m_mBody_plainText("blabla"))); /*m_mBody_SMS(m_SMS({m_msgSummaryLine("Voice-Message","4/1","(2/0)"), m_msgSummaryLine("Video-Message","3/1","(1/0)"), m_msgSummaryLine("Fax-Message","2/1","(0/1)") }))*/ m_mBody_plainText("blabla") ));//TODO MBody f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); Loading @@ -350,7 +550,12 @@ group ActionsAtTheUE { vc_from, vc_to, vc_via, m_mBody_plainText("blabla"))); /*m_mBody_SMS(m_SMS({m_msgSummaryLine("Voice-Message","5/1","(2/0)"), m_msgSummaryLine("Video-Message","3/1","(1/0)"), m_msgSummaryLine("Fax-Message","2/1","(0/1)") }))*/ m_mBody_plainText("blabla") ));//TODO MBody f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); Loading @@ -370,13 +575,330 @@ group ActionsAtTheAS { // ---- test body -----> // send INVITE LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome); // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); //TODO add AS B2B UA behavior f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_001 function f_TC_MWI_N01_002(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("0"))); f_awaitingResponse(mw_Response_Base((c_statusLine200), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_terminated, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_002 function f_TC_MWI_N01_003(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE 1 LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody //SUBSCRIBE 2 f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_003 function f_TC_MWI_N01_004(CSeq p_CSeq) runs on ImsComponent { var float v_SubscriptionExpiryTimer := PX_Timeout_Subscription; f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE 1 LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("10"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody // Await till subscription expires f_awaitingDelayTimer(v_SubscriptionExpiryTimer); //SUBSCRIBE 2 f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base(c_statusLine481, vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_004 function f_TC_MWI_N01_005(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active_expires, /*mw_mBody_SMS(mw_SMS_yes)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_005 function f_TC_MWI_N01_006(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_sendResponse(m_Response_Base(c_statusLine481, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); log ("Check that no subsequent NOTIFY is received"); // Await some time f_awaitingDelayTimer(20.0); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_006 function f_TC_MWI_N01_007(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active_expires, /*mw_mBody_SMS(mw_SMS_yes)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_07 function f_TC_MWI_N01_008(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active, /*mw_mBody_SMS(mw_SMS_yesUri)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_08 function f_TC_MWI_N01_009(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active, /*mw_mBody_SMS(mw_SMS_yesVoice)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_09 function f_TC_MWI_N01_010(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active_expires, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active_expires, /*mw_mBody_SMS(mw_SMS_yes)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_10 function f_TC_MWI_N01_011(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active, /*mw_mBody_SMS(mw_SMS_yes)*/m_mBody_plainText("blabla")));//TODO MBody f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active, /*mw_mBody_SMS(mw_SMS_yesUriVoice)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_11 }// end group ActionsAtTheAS }// end module MWI_TC_Functions No newline at end of file Loading
MWI/MWI_TC_Functions.ttcn +534 −12 Original line number Diff line number Diff line module MWI_TC_Functions { import from LibIms_Templates all; import from LibIms_SIPTypesAndValues {const c_userProfile_UE1atSUThome;} import from LibIms_Steps {function f_IMS_postamble_awaitDeRegistration;} import from LibIms_SIPTypesAndValues {const c_userProfile_UE1atSUThome, c_userProfile_AS1;} import from LibIms_Steps {function f_IMS_postamble_awaitDeRegistration, f_initSipUrl;} import from LibCommon_Sync all; import from LibSip_Templates all; import from LibSip_Steps language "TTCN-3:2005" all; Loading @@ -10,6 +10,7 @@ module MWI_TC_Functions { import from LibSip_SIPTypesAndValues language "TTCN-3:2005" all; import from LibIms_Interface {type ImsComponent;} import from LibIms_PIXITS all; import from LibSip_PIXITS {modulepar PX_SIP_TWAIT;} modulepar { /** @desc charstring, for the public service identity of the Message Account (MA) Loading @@ -17,9 +18,151 @@ module MWI_TC_Functions { charstring PX_IMS_TS_MA; } modulepar { /** @desc float, expiry timer PX_Timeout_Subscription for Subscription */ float PX_Timeout_Subscription := 12.0; } // IMS ETSI name MWI application const charstring c_imsEtsiMwiApplication := "application/simple-message-summary"; group SMSTypes{//TODO group shall be moved into LibSIPTypesAndValues or into new module LibSip_SMSTypes //TODO add (SMS sms) into type union MessageBody{ in module LibSIPTypesAndValues type record SMS { //Simple_message_summary Msg_status_line msg_status_line, Msg_account msg_account optional, Msg_summary_line_list msg_summary_line_list optional, Opt_msg_headers opt_msg_headers optional } type record Msg_status_line { charstring msg_type, charstring msg_status } type record Msg_account { charstring msg_type_account, SipUrl account_URI } type set of Msg_summary_line Msg_summary_line_list; type record Msg_summary_line { charstring msg_context_class, charstring msgs, charstring urgent_msgs optional } type set of charstring Opt_msg_headers; //type integer msgcount length(1); //msgs and urgent_msgs can be dividet into subtypes } group Templates { group Templates_SMS { // //TODO shall be moved into LibSip_Templates // template MessageBody m_mBody_SMS(template SMS p_SMS):= // { // sms := p_SMS // }; // // //TODO shall be moved into LibSip_Templates // template MessageBody mw_mBody_SMS(template SMS p_SMS):= // { // sms := p_SMS // }; template SMS m_SMS(template Msg_summary_line_list p_summaryLineList) := { msg_status_line := m_msgStatusLine_yes, msg_account := m_msgAccount, msg_summary_line_list :=p_summaryLineList, opt_msg_headers := omit } template SMS mw_SMS := { msg_status_line := ?, msg_account := *, msg_summary_line_list := *, opt_msg_headers := * } template SMS mw_SMS_yes := { msg_status_line := mw_msgStatusLine_yes, msg_account := *, msg_summary_line_list := *, opt_msg_headers := * } template SMS mw_SMS_yesUri := { msg_status_line := mw_msgStatusLine_yes, msg_account := mw_msgAccount, msg_summary_line_list := *, opt_msg_headers := * } template SMS mw_SMS_yesVoice := { msg_status_line := mw_msgStatusLine_yes, msg_account := *, msg_summary_line_list := {mw_msgSummaryLine("voice-message")}, opt_msg_headers := * } template SMS mw_SMS_yesUriVoice := { msg_status_line := mw_msgStatusLine_yes, msg_account := mw_msgAccount, msg_summary_line_list := {mw_msgSummaryLine("voice-message")}, opt_msg_headers := * } template Msg_status_line m_msgStatusLine_yes:= { msg_type := "Message-Waiting", msg_status := "yes" } template Msg_status_line mw_msgStatusLine_yes:= { msg_type := "Message-Waiting", msg_status := "yes" } template Msg_account m_msgAccount := { msg_type_account := "Message-Account", account_URI := m_SipUrl_NumberHostParam(PX_IMS_SUT_UE2_PUBLIC_USER,PX_IMS_SUT_UE2_HOME_DOMAIN,omit) } template Msg_account mw_msgAccount := { msg_type_account := "Message-Account", account_URI := ? } template Msg_summary_line m_msgSummaryLine(template charstring p_msgContexClass,template charstring p_msgs,template charstring p_urgent_msgs) := { msg_context_class := p_msgContexClass, msgs := p_msgs, urgent_msgs := p_urgent_msgs } template Msg_summary_line mw_msgSummaryLine(template charstring p_msgContexClass) := { msg_context_class := p_msgContexClass, msgs := ?, urgent_msgs :=* } } //end group Templates_SMS template Event m_Event_mwi := { fieldName := EVENT_E, Loading Loading @@ -48,6 +191,27 @@ module MWI_TC_Functions { acceptParam := *}} }; template SubscriptionState mw_SubscriptionState_active := { fieldName := SUBSCRIPTION_STATE_E, subState := "active", substateParams := {{id:="expires",paramValue:=?}} } template SubscriptionState mw_SubscriptionState_active_expires := { fieldName := SUBSCRIPTION_STATE_E, subState := "active", substateParams := omit } template SubscriptionState mw_SubscriptionState_terminated := { fieldName := SUBSCRIPTION_STATE_E, subState := "terminated", substateParams := {{id:="reason",paramValue:="timeout"}} } template SUBSCRIBE_Request m_SUBSCRIBE_Request_MWI (SipUrl p_requestUri, CallId p_callId, CSeq p_cSeq, Loading Loading @@ -106,19 +270,45 @@ module MWI_TC_Functions { messageBody := p_mb } template NOTIFY_Request mw_NOTIFY_Request_MWI(CallId p_callId, template NOTIFY_Request mw_NOTIFY_Request_MWI(template CallId p_callId, template SubscriptionState p_subState, template MessageBody p_mb) modifies mw_NOTIFY_Request_Base := { msgHeader := { contentLength := {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))}, contentLength := {fieldName := CONTENT_LENGTH_E, len:= ?/*f_MessageBodyLength(valueof(p_mb))*/}, contentType := {fieldName := CONTENT_TYPE_E, mediaType := c_imsEtsiMwiApplication}, event := mw_Event_mwi, subscriptionState := m_SubscriptionState_active subscriptionState := p_subState }, messageBody := p_mb } }//end group Templates group Steps{ /** * @desc await NOTIFY request */ function f_awaitingNOTIFY(in template NOTIFY_Request p_MSG) runs on ImsComponent { var NOTIFY_Request v_MSG; tc_wait.start(PX_SIP_TWAIT); alt { [] SIPP.receive(p_MSG)-> value v_MSG sender vc_sent_label { tc_wait.stop; f_getRouteMapIntoRecordRoute(vc_cSeq, v_MSG); f_setHeadersOnReceiptOfRequest(v_MSG); } } } // end of f_awaitingNOTIFY_sendReply } group ActionsAtTheUE { function f_TC_MWI_U01_001(CSeq p_CSeq) runs on ImsComponent { Loading Loading @@ -306,7 +496,12 @@ group ActionsAtTheUE { vc_from, vc_to, vc_via, m_mBody_plainText("blabla"))); /*m_mBody_SMS(m_SMS({m_msgSummaryLine("Voice-Message","4/1","(2/0)"), m_msgSummaryLine("Video-Message","3/1","(1/0)"), m_msgSummaryLine("Fax-Message","2/1","(0/1)") }))*/ m_mBody_plainText("blabla") ));//TODO MBody f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); Loading Loading @@ -340,7 +535,12 @@ group ActionsAtTheUE { vc_from, vc_to, vc_via, m_mBody_plainText("blabla"))); /*m_mBody_SMS(m_SMS({m_msgSummaryLine("Voice-Message","4/1","(2/0)"), m_msgSummaryLine("Video-Message","3/1","(1/0)"), m_msgSummaryLine("Fax-Message","2/1","(0/1)") }))*/ m_mBody_plainText("blabla") ));//TODO MBody f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); Loading @@ -350,7 +550,12 @@ group ActionsAtTheUE { vc_from, vc_to, vc_via, m_mBody_plainText("blabla"))); /*m_mBody_SMS(m_SMS({m_msgSummaryLine("Voice-Message","5/1","(2/0)"), m_msgSummaryLine("Video-Message","3/1","(1/0)"), m_msgSummaryLine("Fax-Message","2/1","(0/1)") }))*/ m_mBody_plainText("blabla") ));//TODO MBody f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); Loading @@ -370,13 +575,330 @@ group ActionsAtTheAS { // ---- test body -----> // send INVITE LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE1atSUThome); // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); //TODO add AS B2B UA behavior f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_001 function f_TC_MWI_N01_002(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("0"))); f_awaitingResponse(mw_Response_Base((c_statusLine200), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_terminated, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_002 function f_TC_MWI_N01_003(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE 1 LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody //SUBSCRIBE 2 f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_003 function f_TC_MWI_N01_004(CSeq p_CSeq) runs on ImsComponent { var float v_SubscriptionExpiryTimer := PX_Timeout_Subscription; f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE 1 LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("10"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody // Await till subscription expires f_awaitingDelayTimer(v_SubscriptionExpiryTimer); //SUBSCRIBE 2 f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base(c_statusLine481, vc_callId, vc_cSeq)); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_004 function f_TC_MWI_N01_005(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active_expires, /*mw_mBody_SMS(mw_SMS_yes)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_005 function f_TC_MWI_N01_006(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY(mw_NOTIFY_Request_MWI(vc_callId, *, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_sendResponse(m_Response_Base(c_statusLine481, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); log ("Check that no subsequent NOTIFY is received"); // Await some time f_awaitingDelayTimer(20.0); f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_006 function f_TC_MWI_N01_007(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active_expires, /*mw_mBody_SMS(mw_SMS_yes)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_07 function f_TC_MWI_N01_008(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active, /*mw_mBody_SMS(mw_SMS_yesUri)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_08 function f_TC_MWI_N01_009(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active, /*mw_mBody_SMS(mw_SMS_yesVoice)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_09 function f_TC_MWI_N01_010(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active_expires, /*mw_mBody_SMS(mw_SMS)*/m_mBody_plainText("blabla")));//TODO MBody f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active_expires, /*mw_mBody_SMS(mw_SMS_yes)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_10 function f_TC_MWI_N01_011(CSeq p_CSeq) runs on ImsComponent { f_init_ics_scscf(p_CSeq); // ---- test body -----> // send SUBSCRIBE LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, f_initSipUrl(c_userProfile_AS1)); f_SendSUBSCRIBE(m_SUBSCRIBE_Request_MWI( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, m_Accept_mwi, m_Event_mwi, m_Expires("7200"))); f_awaitingResponse(mw_Response_Base((c_statusLine200, c_statusLine202), vc_callId, vc_cSeq)); f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active, /*mw_mBody_SMS(mw_SMS_yes)*/m_mBody_plainText("blabla")));//TODO MBody f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MWI(vc_callId, mw_SubscriptionState_active, /*mw_mBody_SMS(mw_SMS_yesUriVoice)*/m_mBody_plainText("blabla")));//TODO MBody f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); }// end function f_TC_MWI_N01_11 }// end group ActionsAtTheAS }// end module MWI_TC_Functions No newline at end of file